Aktywne Wpisy
ejenes 0
Prześle 100zl blikiem, jak ktoś zaproponuje skuteczne rozwiązanie problemu.
Pacjent: Opel Astra K 1.4T HB, 125KM, benzyna
Błąd: Powracający check engine: P0420 Nieprawidłowa wydajność katalizatora
Objawy: Aktualnie właściwie żadne podczas jazdy (brak spadku mocy, brak falowania, brak smrodu w kabinie, brak problemu z odpalaniem). Natomiast przed wymiana kata, było zwiększone spalanie.
Pacjent: Opel Astra K 1.4T HB, 125KM, benzyna
Błąd: Powracający check engine: P0420 Nieprawidłowa wydajność katalizatora
Objawy: Aktualnie właściwie żadne podczas jazdy (brak spadku mocy, brak falowania, brak smrodu w kabinie, brak problemu z odpalaniem). Natomiast przed wymiana kata, było zwiększone spalanie.

Daszka +1
#chcepogadac Nocne Polaków rozmowy. Co robicie? Lulacie?





Mam problem z makro. Niestety jestem Amatorem- w VBA (wiedza polega na losowym edytowaniu kodu).
Dodatkowy problem to to, że makro ma działać w środowisku firmowym, na pobieraniu danych ze stron zabezpieczonych dwu etapową weryfikacją. Co ciekawe to już mam za sobą – makro odpytuje o hasło, makro akceptuje klucz weryfikacyjny, tworzy cookie itd. Itp.
Niestety format pobranych danych bardzo mi nie odpowiada, bo jest to kod źródłowy strony, a nie sama strona z wartościami. Same wartości są pobrane, ale ukryte w HTML'owych komendach.
Jak zrobić by skoroszyt został sformatowany z wartościami pobranymi danymi np. tak by nie było widocznego kodu HTML a każda kolejna wartość była w osobnej komórce. Właściwie tak byśmy widzieli stronę, która nas iteruje w Excelu, ale bez szaty graficznej, jedynie tekst, który jest umiejscowiony niemal identycznie (jeżeli chodzi o szerokość i wysokość) jak na stronie w przeglądarce.
Przed wprowadzeniem podwójnej weryfikacji korzystałem z funkcji QueryTables.Add, która działała cudowie. Obecnie nie jestem wstanie tego dokonać (sama strona nie uległa zmianie).
Przedtem dane prezentowały się następująco:
Dane sformatowane
Obecnie:
Chaos z przeplatanym językiem HTML
Fragment makra który, obecnie funkcjonuje (gdzie mamy weryfikacje i pobranie danych):
ThisURL = "https://jakaś strona dynamiczna"
Dim H As Object
Set H = CreateObject("WinHTTP.WinHTTPRequest.5.1")
H.SetAutoLogonPolicy 0
H.SetClientCertificate "CURRENT_USER\MY\" & Environ("USERNAME")
H.SetTimeouts 0, 0, 0, 0
H.Open "GET", ThisURL, False
H.SetRequestHeader "Cookie", VBAMid_v1
H.Send
H.WaitForResponse
DoEvents
A tak kiedyś było (gdzie NIE mamy weryfikacje, ale za to dane były formatowane i prezentowały się przejrzyście ):
Sheets("XXX").Range("A1:U15000").ClearContents
With Sheets("XXX").QueryTables.Add(Connection:= "URL; "https://jakaś strona dynamiczna", Destination:=Sheets("XXX ").Range("$A$1"))
.Name = "Macro"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
Jak zrobić tak by w kodzie weryfikacyjnym wrzucić również formatowanie? Zwykłe zastąpienie lub dopisywanie parametrów tym razem nie daje efektu np.:
Z pierwszego kodu zamiana linii:
ThisURL = "https://jakaś strona dynamiczna"Na:
ThisURL=QueryTables.Add(Connection:="URL; "https://jakaś strona dynamiczna" , Destination:=Sheets("XXX ").Range("$A$1"))Lub np. na:
ThisURL = "https://jakaś strona dynamiczna"With Sheets("XXX").QueryTables.Add(Connection:= "URL; " ThisURL" , Destination:=Sheets("XXX ").Range("$A$1"))
lub też dopisują parametry z drugiego kodu .RowNumbers = False .FillAdjacentFormulas = False itd itp do pierwszego makra nie daje efektu. Bardzo bym prosił o pomoc.
https://stackoverflow.com/questions/62369756/error-when-scraping-data-from-a-given-website
Tylko w Twoim przypadku będzie to coś takiego:
D.body.innerHTML = H.ResponseText
wartosci = D.getElementsByTag("td").outerHTML