Forum
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
nesneyi dispose yada close etmeyi dene yada BP ile incele , nerde takılıyor , XML yada dbden okumanızı tavsiye ederim.
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 🙁
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
Break POINT ( hata yakalama )