Visual Basic for Applications:
Pobieranie strony internetowej
Jak to zrobić:
Aby pobrać stronę internetową w VBA, można skorzystać z biblioteki Microsoft XML, wersja 6.0 (MSXML6), która umożliwia wykonywanie żądań HTTP serwera. Zanim przejdziesz do kodu, upewnij się, że włączyłeś to odniesienie w swoim edytorze VBA, przechodząc do Narzędzia
-> Odniesienia
i zaznaczając Microsoft XML, wersja 6.0
.
Oto prosty przykład, jak pobrać zawartość HTML strony internetowej:
Sub PobierzStroneWWW()
Dim request As Object
Dim url As String
Dim response As String
' Inicjalizacja obiektu żądania XML HTTP
Set request = CreateObject("MSXML2.XMLHTTP")
url = "http://www.example.com"
' Otwarcie synchronicznego żądania
request.Open "GET", url, False
' Wysłanie żądania do serwera
request.send
' Pobranie tekstu odpowiedzi
response = request.responseText
' Wyświetlenie odpowiedzi w oknie natychmiastowym (do celów debugowania)
Debug.Print response
' Sprzątanie
Set request = Nothing
End Sub
Uruchomienie tej subrutyny spowoduje wydrukowanie HTML-a http://www.example.com
w oknie Natychmiastowym w edytorze VBA. Należy zauważyć, że parametr False
w metodzie Open
sprawia, że żądanie jest synchroniczne, co oznacza, że kod będzie czekał, aż strona internetowa zostanie pobrana, zanim przejdzie do następnej linii.
Głębsze zanurzenie
Technika pokazana polega na użyciu MSXML, implementacji przez Microsoft standardu XML HTTP Request, często używanego do żądań AJAX w rozwoju stron internetowych. Ten komponent jest częścią stosu technologicznego Microsoftu od dawna, co czyni go solidnym wyborem dla żądań sieciowych w VBA.
Jednak opieranie się na MSXML i VBA do pobierania i analizowania zawartości stron internetowych może być ograniczające, szczególnie z nowoczesnymi aplikacjami internetowymi, które intensywnie wykorzystują JavaScript do dynamicznego renderowania treści. Te ograniczenia mogą sprawić, że inne języki lub narzędzia, takie jak Python z bibliotekami takimi jak BeautifulSoup lub Selenium, będą bardziej odpowiednie do zadań związanych z web scrapingiem, ze względu na ich zdolność do wykonania JavaScriptu i obsługi skomplikowanych interakcji z witrynami.
Mimo to, dla prostych zadań, które wymagają pobrania prostych treści HTML lub przy pracach w ramach aplikacji Office, VBA pozostaje praktycznym narzędziem. Jego integracja z pakietem Office umożliwia bezpośrednią manipulację dokumentami na podstawie zawartości sieciowej, oferując unikatową zaletę dla konkretnych przypadków użycia.