Twoj adres e-mail nie bedzie opublikowany. wymagane pola są zaznaczone *

Przepraszamy - nie zastanawiałem się, jak kod będzie wyglądał w przesłanym komentarzu. Usuń, jeśli chcesz, a ja ponownie opublikuję post w lepszym formacie.

Jeśli chodzi o komentarze na temat archaizmu VBA, uważam to za bardzo przydatne. Pozwoliło mi to przekształcić tygodniowy proces w moim zespole w proces trwający 10 minut. Pozwoliło mi to zmniejszyć większość działań, które wykonuje mój zespół, automatyzując prawie wszystko.

Był w stanie zastosować walidację AD, wyodrębnić dane z różnych baz danych systemów operacyjnych i zredukować wszystkie kłopotliwe zapytania SQL, a następnie wyciąć i wkleić.

Zmieniono zadanie wymagające wielu zapytań, ręcznie generując wiele e-maili jednym kliknięciem przycisku.

Uwielbiam to, archaiczne czy nie.

Jakiś czas temu znalazłem coś w tym stylu i opracowałem aplikację opartą na programie Excel, która pozwoliła mi śledzić liczbę „polubień” na zestawie określonych stron na Facebooku. Od tego czasu rozszerzyłem tę funkcję, aby używać VBA do uzyskiwania wszelkiego rodzaju informacji na różnych stronach internetowych.

instagram viewer

Mój problem w tej chwili polega na tym, że mam problemy z IE i zwykle używam Chrome.

Jak mam przetłumaczyć powyższy kod, aby działał tak samo, ale używając przeglądarki Chrome jako przeglądarki. Mogę użyć polecenia Shell, aby otworzyć przeglądarkę Chrome i przejść do określonego adresu URL, ale nie mogę wymyślić, jak wyodrębnić informacje z tej strony.

Na przykład mój kod na Facebooku to:

Sub GetLikes () Dim IeApp As InternetExplorerDim sURL As StringDim IeDoc As ObjectDim i As Longdebugmode = False Jeśli tryb debugowania to otwórz „c: VBAoutputvbaOutput.txt "Dla Dołącz jako # 1" Utwórz nową instancję IE Ustaw IeApp = Nowy InternetExplorer "Pokaż to - niektóre rzeczy nie działają, chyba że jest widoczny IeApp. Widoczny = tryb debugowania dla każdego mc W zaznaczeniu zdefiniuj stronę, aby otworzyć sURL = mc 'Znajdź kolumnę chkDate = Data Ustaw c = Zakres („2: 2”). (chkDate) Jeśli c jest niczym, to myCol = Zakres („2: 2”). Znajdź (what: = „*”, searchdirection: = xlPrevious). Kolumna + 1 komórki (1, myCol) = „Status” Komórki (1, myCol + 1) = „Likes” Cells (1, myCol + 2) = „Links” Cells (2, myCol) = chkDate Cells (2, myCol + 1) = chkDate Cells (2, myCol + 2) = chkDate Else myCol = c. Koniec kolumny Jeśli „mc. Offset (0, 1). Wartość = Data isDown = mc. Przesunięcie (0, 3) .Wartość Jeśli isDown = „Strona w dół”, a następnie pageDown = „Strona w dół” numlikes = „” numlinks = ”„ doNothing = True Else ”przejdź do strony IeApp. Nawiguj po sURL 'Wstrzymaj makro za pomocą pętli, aż strona zostanie w pełni załadowana. Wykonaj pętlę do IeApp. ReadyState = READYSTATE_COMPLETE 'przechowuje obiekt dokumentu Ustaw IeDoc = IeApp. Dokument o błędzie Wznów Następne kody = IeDoc. Body.innertext If Err. Liczba 0, a następnie błąd. Wyczyść GoTo skiploop Koniec, jeśli wystąpi błąd GoTo 0 Jeśli tryb debugowania Następnie wpisz nr 1, kody i vbCrLf i vbCrLf numlinks = IeDoc. Spinki do mankietów. Długość a = IeApp. LokalizacjaNazwa „Debuguj. Drukuj kody pageDown = True isPageStats = InStr (kody, „placePageStatsNumber”) isGroup = InStr (kody, „uiButtonText> Dołącz”) isOldGroup = InStr (kody, „Ta grupa jest zaplanowana zarchiwizowane ”) isOpenGroup = InStr (kody,„ Otwarta grupa ”) isEvent = InStr (kody,„ Zdarzenie publiczne ”) isClosedGroup = InStr (kody,„ Grupa zamknięta ”) IsOpen = InStr (kody, a) isCommonInterest = InStr (kody, „wspólny interes”) isMovie = InStr (kody, „Movieu003c”) isNumberGiant = InStr (kody, „uiNumberGiant”) notFound = InStr (kody, „Nie znaleziono żądanej strony”) profileUnavailable = InStr (a, „Profile Niedostępne”) titlePos = InStr (kody, „”) Jeśli titlePos> 0, a następnie titlePos2 = InStr (titlePos, kody, „”) Jeśli titlePos> 0, a następnie titleName = Mid (kody, titlePos + 7, titlePos2 - titlePos - 7) Jeśli isPageStats> 0, to isPageStats = isPageStats + 23 pos2 = InStr (isPageStats, kody, "") pageDown = "Current" likeTxt = Mid (kody, isPageStats, pos2 - isPageStats) ElseIf isGroup> 0 Zatem likeTxt = "n.k." pageDown = "Group" ElseIf isOldGroup> 0 Następnie likeTxt = "n.k." pageDown = „Stara grupa” ElseIf isOpenGroup> 0 Następnie pos1 = InStr (isOpenGroup, kody, „Members (”) + 9 pos2 = InStr (pos1, kody, „)”) numMembers = Mid (kody, pos1, pos2 - pos1) pageDown = „Open Group” likeTxt = LTrim ( numMembers) ElseIf isEvent> 0 Następnie pos1 = InStr (1, kody, „Centrum pomocy”) pos2 = InStr (pos1 + 1, kody, „Zobacz wszystko”) + 9 pos3 = InStr (pos2, kody, „Uczestniczenie”) - 1 Jeśli pos3 = -1 Następnie pos1 = InStr (kody, „pagelet_event_guests_going”) + 28 pos2 = InStr (pos1, kody, „> Going (”) + 8 pos3 = InStr (pos2, kody, „)”) numAttending = Mid (kody, pos2, pos3 - pos2) numAttending = Mid (kody, pos2, pos3 - pos2) 'pos2 - pos1) Koniec Jeśli likeTxt = LTrim (numAttending) pageDown = "Event" ElseIf isClosedGroup> 0 Następnie pageDown = "Closed Group" pos1 = InStr (isClosedGroup, kody, „Członkowie”) + 9 pos2 = InStr (pos1, kody, „)”) likeTxt = Mid (kody, pos1, pos2 - pos1) ElseIf isNumberGiant> 0 Następnie pos2 = InStr (isNumberGiant, kody, „>”) pos3 = InStr (pos2, kody, „”) likeTxt = Mid (kody, pos2 + 1, pos3 - pos2 - 1) pageDown = „Current” ElseIf isCommonInterest> 0 Następnie pageDown = „Common Interest” likeTxt = „n.k.” ElseIf IsOpen> 0 And a „Facebook” Następnie pageDown = „Current” likeTxt = „n.k.” ElseIf isMovie> 0 Następnie pageDown = "Movie" likeTxt = "n.k." End If If pageDown = True, a następnie pageDown = „Page Down” likeTxt = „n.a.” numlinks = „nie dotyczy” End If End If mc. Przesunięcie (0, myCol - 2). Wartość = pageDown mc. Offset (0, myCol - 1). Wartość = likeTxt mc. Offset (0, myCol - 0) = numlinksskiploop: pageDown = "" likeTxt = "" numlinks = "" Dalej mc'Clean up IeApp. Wyjdź Ustaw IeApp = Nic Jeśli tryb debugowania Następnie zamknij # 1 Zakończ Sub

Jest niezgrabny, ale działa.

Chyba wszystko, czego szukam, to jak wyodrębnić plik .Body.innertext z instancji Google Chrome.

Jak powiedział Jeff, nie zastępuj przeglądarki, ale wykorzystaj ją do określonej aplikacji. Użyłem tej metody dwa razy.

Należę do lokalnego klubu hobby, ale ty też musisz być członkiem klubu narodowego. Kiedyś korzystałem z kwerendy internetowej Excel, aby przechodzić przez nasze członkostwo (według numeru identyfikacyjnego członka krajowego) i sprawdzać, czy członkowie zostali opłaceni w organizacji krajowej. Ale kilka lat temu organizacja narodowa zmieniła sposób, w jaki działa ich strona, a zapytanie sieciowe przestało działać. Ale ta metoda wciąż pozwala mi szybko zmieniać członkostwo i wizualnie weryfikować członkostwo krajowe. (Osadzam przeglądarkę w formularzu Excel, który jednocześnie wyświetla informacje o członkach naszego lokalnego klubu).

W zeszłym tygodniu w pracy musieliśmy przeprowadzić audyt dokładności informacji zawartych w około 10 000 zdjęć; porównanie informacji zarejestrowanych na obrazie z powiązanymi informacjami w naszej bazie danych i upewnienie się, że są one zgodne. Potrzebowałem więc sposobu, aby użytkownicy mogli szybko obejrzeć obraz, wpisać w nim informacje zawarte w tym obrazie i powtórzyć to ponad 10000 razy. Umieszczamy obrazy na serwerze internetowym i użyłem tej metody, aby przeciągnąć obraz do okna przeglądarki w formularzu wprowadzania danych Excel. Użytkownicy zobaczą obraz, wpisz wymagane informacje w formularzu wprowadzania danych, naciśnij klawisz Enter i natychmiast przejdą do następnego zdjęcia do przeglądu.

W przypadku aplikacji, które opisałem powyżej, jest to całkiem przydatne. Prawdopodobnie nigdy nie poświęcę czasu, aby stać się biegłym w jakimkolwiek „poważniejszym” języku programowania, ale mogę nagrywać makra i snippetować wystarczająco dobrze przez VBA. Audyt dokładności zajął mi niecały dzień, aby w pełni opracować, przetestować i wdrożyć. Nie musiałem ściągać zasobów programistów z przydzielonych im zadań (poważnie wątpię, aby którykolwiek z naszych programistów Java lub PL-SQL mógł to zrobić szybciej niż przy użyciu waniliowego Excela i VBA.