Anasayfa » Forum

vb.net HTML'den TAB...
 

vb.net HTML'den TABLE okumak  

  RSS
Nail İŞLER
(@NailiSLER)
Yeni Üye

Herkese merhaba,

VB.net üzerinden Internetexplorer.application kullanarak bir web sayfasında ki tabloyu programın içerisine yazdırmak istiyorum.
Program düzgün çalışıyor fakat kez sayfa içeriğini okutmak istediğimde hata veriyor. Bir türlü neden olduğunu bulamadım destek olabilir misiniz?

Calistirdigim kod :

Dim oIE As Object
oIE = CreateObject("InternetExplorer.application")
oIE.Navigate("https://www.tttxxxyyy.com/tablolar/2018_cikti.html")
oIE.Visible = True

Do While oIE.Busy Or oIE.ReadyState <> 4
            Application.DoEvents()
Loop

RichTextBox1.Clear()

If (oIE.Document IsNot Nothing) Then
      Dim yenidoc As mshtml.IHTMLDocument = oIE.document
      Dim htmlDocument As mshtml.IHTMLDocument2 = yenidoc
      Dim allElements As mshtml.IHTMLElementCollection = htmlDocument.body.all
      Dim allInputs As mshtml.IHTMLElementCollection = allElements.tags("table")
      Dim varTable As HTMLTable
      Dim varRow As IHTMLTableRow
      For Each varTable In allInputs
          For Each varRow In varTable.rows
              RichTextBox1.AppendText(varRow.cells(1).innertext.ToString & Environment.NewLine)
          Next varRow
      Next varTable
Else
      MsgBox("Hata oie.document")
End If


 

butona 1 kez basmamda sonuçları richtextbox1 atmakta fakat 2. Kez bastığımda şu hatayı vermekte,

System.NotSupportedException
  HResult=0x800A01B6
  İleti=HRESULT özel durum döndürdü: 0x800A01B6
  Kaynak=Microsoft.VisualBasic
 

Alıntı
Gönderildi : 03/08/2018 18:06
Birol Aydugan
(@BirolAydugan)
Yeni Üye

nesneyi dispose yada close etmeyi dene yada BP ile incele , nerde takılıyor , XML yada dbden okumanızı tavsiye ederim.

CevapAlıntı
Gönderildi : 03/08/2018 23:18
Nail İŞLER
(@NailiSLER)
Yeni Üye

Cevap için teşekkürler Birol bey fakat dispose yaptığımda şu şekle dönüştü,

oIE = CreateObject("InternetExplorer.application")
oIE.Navigate("https://www.sssxxxrttt.com/bbbb.html")
oIE.Visible = True
        Do While oIE.Busy Or oIE.ReadyState <> 4
            Application.DoEvents()
        Loop

        RichTextBox1.Clear()

        If (oIE.Document IsNot Nothing) Then
            Dim yenidoc As mshtml.IHTMLDocument = oIE.document
            Dim htmlDocument As mshtml.IHTMLDocument2 = yenidoc
            Dim allElements As mshtml.IHTMLElementCollection = htmlDocument.body.all
            Dim allInputs As mshtml.IHTMLElementCollection = allElements.tags("table")

            Dim varTable As HTMLTable
            Dim varRow As IHTMLTableRow
            For Each varTable In allInputs
                For Each varRow In varTable.rows
                    RichTextBox1.AppendText(varRow.cells(1).innertext.ToString & Environment.NewLine)
                Next varRow
            Next varTable
            htmlDocument.close()

        Else
            MsgBox("Hata oie.document")
        End If

 

Bu şekilde butona ilk bastığımda hatasız sutunu ekrana aliyor 2. kez bastığımda yine aynı hatayı verdi.
BP dediğiniz tam nedir bilemiyorum biraz daha detayli bbilgi verme şansınız varmıdır bu yazılım konusunda bilgim çok giriş düzeyinde.

 

Bu arada sadece html ciktisi alabiliyorum xmll veya db gibi şansım maalesef yok 🙁

CevapAlıntı
Gönderildi : 04/08/2018 16:12
Nail İŞLER
(@NailiSLER)
Yeni Üye

Verdiği tam hata ;

System.NotSupportedException
  HResult=0x800A01B6
  İleti=HRESULT özel durum döndürdü: 0x800A01B6
  Kaynak=Microsoft.VisualBasic
  StackTrace:
   konum Microsoft.VisualBasic.CompilerServices.LateBinding.LateGet(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack)
   konum Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack)
   konum rapor.Form1.ParseTable() C:\xxxxxxxxxxxxxxx\Form1.vb içinde: 242. satır
   konum rapor.Form1.Button6_Click(Object sender, EventArgs e) C:\xxxxxxxxxxxx\Form1.vb içinde: 220. satır
   konum System.Windows.Forms.Control.OnClick(EventArgs e)
   konum System.Windows.Forms.Button.OnClick(EventArgs e)
   konum System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   konum System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   konum System.Windows.Forms.Control.WndProc(Message& m)
   konum System.Windows.Forms.ButtonBase.WndProc(Message& m)
   konum System.Windows.Forms.Button.WndProc(Message& m)
   konum System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   konum System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   konum System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
   konum System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   konum System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
   konum System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   konum System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   konum Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
   konum Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
   konum Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
   konum rapor.My.MyApplication.Main(String[] Args)  içinde: 81. satır

CevapAlıntı
Gönderildi : 04/08/2018 18:08
Birol Aydugan
(@BirolAydugan)
Yeni Üye

Break POINT ( hata yakalama ) 

CevapAlıntı
Gönderildi : 04/08/2018 18:56
Paylaş:
  
Çalışıyor

Lütfen Giriş yap yada Kayıt ol