Vaše e-mailová adresa nebude zveřejněna. Povinná pole jsou označena *

Litujeme - nepřemýšleli o tom, jak by kód vypadal v odeslaném komentáři. Pokud chcete, odstraňte je a já odešlu příspěvek v lepším formátu.

Pokud jde o komentáře, že VBA je archaický, považoval jsem to za opravdu užitečné. To mi umožnilo proměnit týdenní proces v mém týmu na 10 minutový proces. To mi umožnilo zmenšit většinu činností, které můj tým provádí, automatizací téměř všeho.

Byl schopen aplikovat ověření AD, extrahovat data z různých databází operačních systémů a omezit všechny otravné dotazy SQL a poté je oříznout a vložit.

Změnila úlohu, která vyžadovala více dotazů, a ručně generovala více e-mailů jediným kliknutím.

Naprosto to miluji, archaické nebo ne.

Před časem jsem něco našel a vyvinul aplikaci založenou na Excelu, která mi umožnila sledovat počet „Líbí se“ na sadě určených stránek na Facebooku. Od té doby jsem to rozšířil o používání VBA k získání nejrůznějších informací na různých webových stránkách.

Momentálně mám problém s tím, že mám nějaké problémy s IE a mám sklon používat Chrome.

instagram viewer

Jak překládám výše uvedený kód, aby to samé fungovalo, ale pomocí prohlížeče Chrome. Pomocí příkazu Shell mohu otevřít prohlížeč Chrome a přejít na konkrétní adresu URL, ale nedokážu přijít na to, jak extrahovat informace z této stránky.

Například můj kód na Facebooku je:

Sub GetLikes () Dim IeApp jako InternetExplorerDim sURL As StringDim IeDoc As ObjectDim i As Longdebugmode = False If debugmode Then Open "c: VBAoutputvbaOutput.txt "Připojit jako # 1 'Vytvořit novou instanci IE Set IeApp = Nový InternetExplorer' Zviditelnit - některé věci nefungují, pokud je to viditelné IeApp. Visible = debugmode Pro každý mc ve výběru vyberte stránku pro otevření sURL = mc 'Najděte sloupec chkDate = Date Set c = Range ("2: 2"). (chkDate) Pokud c nic není, myCol = Range ("2: 2"). Najděte (co: = "*", searchdirection: = xlPrevious) .Column + 1 Cells (1, myCol) = "Status" Cells (1, myCol + 1) = "Líbí se" Buňky (1, myCol + 2) = "Odkazy" Buňky (2, myCol) = chkDate Buňky (2, myCol + 1) = chkDate Buňky (2, myCol + 2) = chkDate Else myCol = c. Konec sloupce If 'mc. Offset (0, 1). Hodnota = Datum jeDown = mc. Offset (0, 3) .Hodnota Pokud isDown = "Page Down" Pak pageDown = "Page Down" numlikes = "" numlinks = "" doNothing = True Else 'přejděte na stránku IeApp. Navigujte sURL 'Pozastavte makro pomocí smyčky, dokud se stránka plně nenačte Do Loop Until IeApp. ReadyState = READYSTATE_COMPLETE 'uloží sadu objektů dokumentu IeDoc = IeApp. Dokument On Error Resume Další kódy = IeDoc. Body.innertext If Err. Číslo 0 Pak Err. Vymažte konec SkipTop GoTo, pokud je zapnutý, GoTo 0 If debugmode Pak napište # 1, kódy & vbCrLf & vbCrLf numlinks = IeDoc. Odkazy. Délka a = IeApp. LocationName 'Debug. Tisknout kódy pageDown = True isPageStats = InStr (kódy, "placePageStatsNumber") isGroup = InStr (kódy, "uiButtonText> Join") isOldGroup = InStr (kódy, "Tato skupina je naplánována na archivováno ") isOpenGroup = InStr (kódy," Otevřená skupina ") isEvent = InStr (kódy," Veřejná událost ") isClosedGroup = InStr (kódy," Uzavřená skupina ") IsOpen = InStr (kódy, a) isCommonInterest = InStr (kódy, "Společný zájem") isMovie = InStr (kódy, "Movieu003c") isNumberGiant = InStr (kódy, "uiNumberGiant") notFound = InStr (kódy, "Požadovaná stránka nebyla nalezena") profileUnavailable = InStr (a, "Unavailable") titlePos = InStr (kódy, "") If titlePos> 0 Then titlePos2 = InStr (titlePos, kódy, "") If titlePos> 0 Then titleName = Mid (kódy, titlePos + 7, titlePos2 - titlePos - 7) Pokud isPageStats> 0 Pak isPageStats = isPageStats + 23 pos2 = InStr (isPageStats, kódy, "") pageDown = "Current" likeTxt = Mid (kódy, isPageStats, pos2 - isPageStats) ElseIf isGroup> 0 Then likeTxt = "n.k." pageDown = "Group" ElseIf isOldGroup> 0 Then likeTxt = "n.k." pageDown = "Old Group" ElseIf isOpenGroup> 0 Pak pos1 = InStr (isOpenGroup, kódy, "Members (") + 9 pos2 = InStr (pos1, kódy, ")") numMembers = Mid (kódy, pos1, pos2 - pos1) pageDown = "Open Group" likeTxt = LTrim ( numMembers) Jinak isEvent> 0 Pak pos1 = InStr (1, kódy, "Centrum nápovědy") pos2 = InStr (pos1 + 1, kódy, "See All") + 9 pos3 = InStr (pos2, kódy, "Attending") - 1 If pos3 = -1 Pak pos1 = InStr (kódy, "pagelet_event_guests_going") + 28 pos2 = InStr (pos1, kódy, "> Going (") + 8 pos3 = InStr (pos2, kódy, ")") numAttending = Mid (kódy, pos2, pos3 - pos2) Else numAttending = Mid (kódy, pos2, pos3 - pos2) 'pos2 - pos1) End If likeTxt = LTrim (numAttending) pageDown = "Event" ElseIf isClosedGroup> 0 Then pageDown = "Closed Group" pos1 = InStr (isClosedGroup, kódy, "Členové") + 9 pos2 = InStr (pos1, kódy, ")") likeTxt = Mid (kódy, pos1, pos2 - pos1) ElseIf isNumberGiant> 0 Pak pos2 = InStr (isNumberGiant, kódy, ">") pos3 = InStr (pos2, kódy, "") likeTxt = Mid (kódy, pos2 + 1, pos3 - pos2 - 1) pageDown = "Current" ElseIf isCommonInterest> 0 Then pageDown = "Common Interest" likeTxt = "n.k." Jinak IsOpen> 0 A a "Facebook" Pak pageDown = "Aktuální" likeTxt = "n.k." Jinak isMovie> 0 Pak pageDown = "Movie" likeTxt = "n.k." End If If pageDown = True Then pageDown = "Page Down" likeTxt = "n.a." numlinks = "n.a." End If End If mc. Offset (0, myCol - 2). Hodnota = pageDown mc. Offset (0, myCol - 1). Hodnota = likeTxt mc. Offset (0, myCol - 0) = numlinksskiploop: pageDown = "" likeTxt = "" numlinks = "" Další mc'Clean up IeApp. Ukončete Set IeApp = Nic Pokud debugmode Pak zavřete # 1 End Sub

Je to neohrabané, ale dělá svou práci.

Myslím, že vše, po čem jsem, je, jak extrahovat .Body.innertext z instance Google Chrome.

Jak řekl Jeff, nenahrazujte prohlížeč, ale využívejte jej pro konkrétní aplikaci. Tuto metodu jsem použil dvakrát.

Patřím do místního zájmového klubu, ale musíte být také členem národního klubu. Použil jsem webový dotaz Excel k procházení našeho členství (podle národního identifikačního čísla člena) a ověřování, zda členové byli zaplaceni v národní organizaci. Ale před několika lety se národní organizace změnila ve způsobu, jakým běží jejich web, a webový dotaz by již nefungoval. Ale tato metoda mi stále umožňuje rychle projít členstvím a vizuálně ověřit národní členství. (Vložil jsem prohlížeč do Excelu, který současně zobrazuje informace o členech našeho místního klubu.)

Pak jsme minulý týden v práci museli provést audit přesnosti informací obsažených v přibližně 10 000 obrázcích; porovnání informací zachycených na obrázku se souvisejícími informacemi v naší databázi a zajištění jejich shody. Proto jsem potřeboval způsob, jak by se uživatelé mohli rychle podívat na obrázek, napsat nějaké informace obsažené v obrázku a zopakovat to znovu a znovu 10 000krát. Umístili jsme obrázky na webový server a tuto metodu jsem použil k přetažení obrázku do okna prohlížeče na formuláři pro zadávání dat Excel. Uživatelé uvidí obrázek, do formuláře pro zadávání údajů zadají požadované informace, stisknou klávesu Enter a okamžitě přejdou na další obrázek ke kontrole.

Pro aplikace, jak jsem popsal výše, je to docela užitečné. Pravděpodobně nikdy nebudu mít čas na to, abych se ovládal jakýmkoli „vážnějším“ programovacím jazykem, ale dokážu natáčet makra a útržky si cestu VBA natolik dobře. Audit přesnosti mi zabral méně než jeden den, než jsem se plně rozvinul, testoval a implementoval. Nemusel jsem stahovat vývojové prostředky z přidělených úkolů (a vážně pochybuji, že by kterýkoli z našich vývojářů v jazyce Java nebo PL-SQL mohl udělat to rychleji, než jsem dělal s použitím vanilky Excel a VBA.