W jednym z projektów musiałem pobrać różne wartości ze strony www. O ile z <div> i jego elementami jak <h5>, czy <p> nie miałem problemów, tak <script> nie mogłem odczytać w VBA.
Gdzieś tam wyczytałem, że VBA nie odczyta <script>, ale czy to prawda nie wiem. W każdym bądź razie znalazłem rozwiązanie pobrania interesującego mnie elementu z <script>. Może nie jest to za zbyt efektywne rozwiązanie, ale działa.
Oto przykład HTML:
Moim zdaniem jest pobranie ścieżki pliku z rozszerzeniem .abc.
Przykład VBA:
Private Sub GetNeededScriptValueFromHtml() ' Needed references: ' Microsoft HTML Object Library Dim htmlEle1 As IHTMLElement Dim HTMLDoc As HTMLDocument Dim url As String url = "WebPagePath.com" Set HTMLDoc = New HTMLDocument ' Open connection ' https://stackoverflow.com/questions/41558714/pull-value-from-website-html-div-class-using-excel-vba With CreateObject("WINHTTP.WinHTTPRequest.5.1") .Open "GET", url, False .send HTMLDoc.body.innerHTML = .responseText End With ' Get needed value from <script> Debug.Print Mid(HTMLDoc.body.innerHTML, (InStr(HTMLDoc.body.innerHTML, "abc") + 6), _ InStr(HTMLDoc.body.innerHTML, ".abc") - InStr(HTMLDoc.body.innerHTML, "abc")) End Sub
HTMLDoc.body.innerHTML to cały pobrany HTML. Musiałem znaleźć interesujący mnie fragment za pomocą funkcji MID. Funkcja InStr szuka określonego słowa w stringu.