Vaša e-mailová adresa nebude zverejnená. Povinné polia sú označené *

Ľutujeme, nemysleli sme na to, ako bude vyzerať kód v odoslanom komentári. Ak chcete, zmažte ho a uverejním to v lepšom formáte.

Pokiaľ ide o komentáre o tom, že VBA je archaický, považoval som to za skutočne užitočné. Umožnilo mi to zmeniť týždeň trvajúci proces v mojom tíme na 10 minútový proces. Umožnilo mi to zmenšiť väčšinu aktivít, ktoré tím vykonáva, automatizáciou takmer všetkého.

Dokázali aplikovať validácie AD, extrahovať údaje z rôznych databáz operačných systémov a obmedziť všetky otravné dotazy SQL a potom orezať a vložiť.

Zmena úlohy, ktorá si vyžadovala viac otázok, manuálnym vygenerovaním viacerých e-mailov do jediného kliknutia na tlačidlo.

Absolútne sa mi páči, archaický alebo nie.

Pred týmto časom som niečo našiel a vyvinul aplikáciu založenú na Exceli, ktorá mi umožnila sledovať počet označení „Páči sa mi“ na sade špecifikovaných stránok Facebooku. Od tej doby som to rozšíril o používanie VBA na získanie najrôznejších informácií na rôznych webových stránkach.

instagram viewer

Momentálne mám problém s tým, že mám nejaké problémy s prehliadačom IE a mám sklon používať prehliadač Chrome.

Ako môžem preložiť kód, ktorý máte vyššie, aby to isté fungovalo, ale pomocou prehliadača Chrome. Pomocou príkazu Shell môžem otvoriť prehliadač Chrome a prejsť na konkrétnu webovú adresu, ale neviem zistiť, ako extrahovať informácie z tejto stránky.

Napríklad môj kód na Facebooku je:

Sub GetLikes () Dim IeApp ako InternetExplorerDim sURL ako StringDim IeDoc ako ObjectDim i As Longdebugmode = False If debugmode Then Open "c: VBAoutputvbaOutput.txt "Pripojiť ako # 1 'Vytvoriť novú inštanciu IE Set IeApp = Nový InternetExplorer' Zviditeľniť - niektoré veci nefungujú, pokiaľ je to viditeľné IeApp. Visible = debugmode Pre každý mc vo výbere definujte stránku, ktorá sa má otvoriť sURL = mc 'Nájdite stĺpec chkDate = Dátum Set c = Range ("2: 2"). (chkDate) Ak c nič nie je, myCol = rozsah ("2: 2"). Nájsť (čo: = "*", searchdirection: = xlPrevious) .Column + 1 Cells (1, myCol) = "Status" Cells (1, myCol + 1) = "Páči sa mi" bunky (1, myCol + 2) = "odkazy" bunky (2, myCol) = chkDate bunky (2, myCol + 1) = chkDate bunky (2, myCol + 2) = chkDate Else myCol = c. Koniec stĺpca If 'mc. Offset (0, 1). Hodnota = Dátum je Down = mc. Offset (0, 3) .Hodnota Ak isDown = "Page Down" Potom pageDown = "Page Down" numlikes = "" numlinks = "" doNothing = True Else 'prejdite na stránku IeApp. Navigujte sURL 'Pozastavte makro pomocou slučky, kým sa stránka úplne nenačíta Do Loop Until IeApp. ReadyState = READYSTATE_COMPLETE 'uloží sadu objektov dokumentu IeDoc = IeApp. Dokument pri chybe Pokračovať Ďalšie kódy = IeDoc. Body.innertext If Err. Číslo 0 Potom Err. Vymažte koniec SkipTop GoTo, ak je zapnutý, GoTo 0 If debugmode Potom napíšte # 1, kódy & vbCrLf & vbCrLf numlinks = IeDoc. Odkazy. Dĺžka a = IeApp. LocationName 'Debug. Vytlačiť kódy pageDown = True isPageStats = InStr (kódy, "placePageStatsNumber") isGroup = InStr (kódy, "uiButtonText> Join") isOldGroup = InStr (kódy, "Táto skupina je naplánovaná na archivované ") isOpenGroup = InStr (kódy," Open Group ") isEvent = InStr (kódy," Public Event ") isClosedGroup = InStr (kódy," Closed Group ") IsOpen = InStr (kódy, a) isCommonInterest = InStr (kódy, "Spoločný záujem") isMovie = InStr (kódy, "Movieu003c") isNumberGiant = InStr (kódy, "uiNumberGiant") notFound = InStr (kódy, "Požadovaná stránka sa nenašla") profileUnavailable = InStr (a, "Unavailable") titlePos = InStr (kódy, "") If titlePos> 0 Then titlePos2 = InStr (titlePos, code, "") If titlePos> 0 Then titleName = Mid (kódy, titlePos + 7, titlePos2 - titlePos - 7) If isPageStats> 0 Then 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 Potom pos1 = InStr (isOpenGroup, kódy, "Members (") + 9 pos2 = InStr (pos1, kódy, ")") numMembers = Mid (kódy, poz1, pos2 - pos1) pageDown = "Open Group" likeTxt = LTrim ( numMembers) Iný spôsob jeEvent> 0 Potom pos1 = InStr (1, kódy, "Centrum pomoci") pos2 = InStr (pos1 + 1, kódy, "See All") + 9 pos3 = InStr (pos2, kódy, "Attending") - 1 If pos3 = -1 Potom 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, „Členovia“) + 9 pos2 = InStr (pos1, kódy, „)“) likeTxt = Mid (kódy, pos1, pos2 - pos1) ElseIf isNumberGiant> 0 Potom 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." Inak IsOpen> 0 A a "Facebook" Potom pageDown = "Current" likeTxt = "n.k." Ak je isMovie> 0 Potom 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. Ofset (0, myCol - 2). Hodnota = pageDown mc. Ofset (0, myCol - 1). Hodnota = likeTxt mc. Ofset (0, myCol - 0) = numlinksskiploop: pageDown = "" likeTxt = "" numlinks = "" Ďalej mc'Clean up IeApp. Ukončite nastavenie IeApp = Nič ak ladiaci režim Potom zatvorte # 1 End Sub

Je to neohrabané, ale robí svoju prácu.

Myslím, že všetko, čo nasledujem, je spôsob, ako extrahovať .Body.innertext z inštancie prehliadača Google Chrome.

Ako povedal Jeff, nenahrádzajte prehliadač, ale využívajte ho pre konkrétnu aplikáciu. Túto metódu som použil dvakrát.

Patrím do miestneho hobby klubu, ale musíte byť tiež členom národného klubu. Použil som webový dotaz programu Excel na prechádzanie cez naše členstvo (podľa národného identifikačného čísla člena) a overenie, či boli členovia vyplatení v národnej organizácii. Ale pred niekoľkými rokmi sa národná organizácia zmenila v spôsobe fungovania svojich stránok a webový dopyt by už ďalej nefungoval. Táto metóda mi však stále umožňuje rýchlo prejsť členstvom a vizuálne overiť národné členstvo. (Vložil som prehliadač do Excelu, ktorý súčasne zobrazuje informácie o našom miestnom klube.)

Potom minulý týždeň sme v práci potrebovali vykonať audit presnosti informácií obsiahnutých na približne 10 000 obrázkoch; porovnanie informácií zachytených na obrázku so súvisiacimi informáciami v našej databáze a zabezpečenie ich zhody. Preto som potreboval spôsob, ako by sa používatelia mohli rýchlo pozrieť na obrázok, napísať niektoré informácie obsiahnuté v obrázku a zopakovať tento počet 10 000-krát. Obrázky sme umiestnili na webový server a túto metódu som použil na vytiahnutie obrázka do okna prehliadača na formulári na zadávanie údajov Excel. Používatelia by videli obrázok, do formulára na zadanie údajov napísali požadované informácie, stlačili kláves Enter a okamžite sa dostali na ďalší obrázok na kontrolu.

Pre aplikácie, ako som opísal vyššie, je to celkom užitočné. Pravdepodobne nikdy nebudem mať čas na to, aby som sa ovládal akýmkoľvek „vážnejším“ programovacím jazykom, ale dokážem dosť dobre zaznamenať makrá a útržky cez VBA. Audit presnosti mi trval menej ako deň, kým som sa úplne rozvinul, testoval a implementoval. Nepotreboval som sťahovať zdroje vývojárov z pridelených úloh (a vážne pochybujem, že by niektorý z našich vývojárov v oblasti Java alebo PL-SQL mohol urobiť to rýchlejšie ako ja, keď používam vanilla Excel a VBA.