QimenMedlem sedan juni 20015 009 inlägg Hej
Hur ska man gå till väga för att hämta information från en webbsida. Jag har kommit så långt att jag navigerat fram till sidan. Men sen får jag inte rätt på det längre. Sökt som tusan på både msdn och experts-exchange men utan resultat som hjälpt mig.
Texten jag vill hämta ligger i en div som heter oDIV2.
<DIV id="oDIV2">1000</DIV>
På msdn hittade jag detta om det är till någon hjälp.
nikoMedlem sedan juni 20022 599 inlägg Du får fram den med vanlig IE-DOM:
värdet = <din IE-instans>.Document.getElementById("oDiv2").innerText
Det som krånglar till det är att du förlorar intellisensen efter <din IE-instans>.Document.
QimenMedlem sedan juni 20015 009 inlägg Vet inte vad jag missat men jag får felmeddelandet:
Run-time error '-2147467259 (80004005)':
Method 'Document' of object 'IWebBrowser2' failed
Måste man deklarera något speciellt? Jag får samma felmedelande när jag försökte med http://www.webforum.nu/showthread.php?s=&postid=779513#post779513
nikoMedlem sedan juni 20022 599 inlägg Jo, men det felet får du för att du remmat bort Sleep:en och dokumentet aldrig hinner laddas, eller hur?
Gör så här istället:
Lägg till under Project -> References
1. Microsoft Internet Controls
2. Microsoft HTML Object Library
Kör sen:
Dim ie As InternetExplorer
Set ie = New InternetExplorer
ie.Navigate2 "http://<din sida>"
Do While ie.Busy
Loop
Dim doc As HTMLDocument
Set doc = ie.document
MsgBox doc.getElementById("oDiv2").innerText
ie.Quit
Tack vare referenserna har du nu full intellisense.
QimenMedlem sedan juni 20015 009 inlägg Mjo det stämmer nog. :r
Fick det inte att funka med MsdBoxen men när jag körde det och la det i en variabel och skrev ut den i en label så gick det bra.
Tack än en gång niko! :bire
QimenMedlem sedan juni 20015 009 inlägg En följfråga, kan man göra så att om den misslyckas öppna sidan så får man ett felmeddelande eller gör något annat. Om man kanske lägger det i en if sats och om ie.Navigate2 är true (inte så enkelt men princip) så går den vidare annars kastar den felmeddelande.
nikoMedlem sedan juni 20022 599 inlägg Visst. Man kan göra mycket mer om man använder events:
Private [b]WithEvents[/b] ie As InternetExplorer
Private Sub Command1_Click()
ie.Navigate2 "http://<dinurl>"
End Sub
Private Sub Form_Load()
Set ie = New InternetExplorer
End Sub
Private Sub Form_Unload(Cancel As Integer)
ie.Quit
Set ie = Nothing
End Sub
Private Sub ie_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
Dim doc As HTMLDocument
Set doc = ie.document
MsgBox doc.getElementById("oDiv2").innerText
End Sub
Private Sub ie_NavigateError(ByVal pDisp As Object, URL As Variant, Frame As Variant, StatusCode As Variant, Cancel As Boolean)
Cancel = True
MsgBox "Fel: " & StatusCode
End Sub
Statuskoderna för felen hittar du här.