Din e-mail-adresse offentliggøres ikke. Nødvendige felter er markeret *

Beklager - tænkte ikke på, hvordan koden ville se ud i den indsendte kommentar. Slet, hvis du vil, så poster jeg igen i et bedre format.

Med hensyn til kommentarerne om VBA er arkaisk, har jeg fundet det virkelig nyttigt. Det gjorde det muligt for mig at omdanne en uges lang proces i mit team til en 10 minutters proces. Det gjorde det muligt for mig at afskalde de fleste af de aktiviteter, mit team udfører ved at automatisere næsten alt.

Har været i stand til at anvende AD-valideringer, udtrække data fra forskellige operativsystemdatabaser og skære ned alle de irriterende SQL-forespørgsler og derefter klippe og indsætte.

Ændrede et job, der krævede flere forespørgsler, manuelt genererede flere e-mails til et enkelt knap-klik.

Jeg elsker det absolut, arkaisk eller ej.

Jeg fandt noget langs disse linjer for nogen tid siden og udviklede en Excel-baseret applikation, der gjorde det muligt for mig at spore antallet af "Likes" på et sæt specificerede Facebook-sider. Jeg har siden udvidet det til at bruge VBA til at få alle mulige oplysninger på forskellige websteder.

instagram viewer

Mit problem i øjeblikket er, at jeg har nogle problemer med IE og har tendens til at bruge Chrome.

Hvordan oversætter jeg den slags kode, du har ovenfor, så den gør det samme, men bruger Chrome som browseren. Jeg kan bruge en Shell-kommando til at åbne Chrome-browseren og gå til en bestemt URL, men kan ikke finde ud af, hvordan jeg udtrækker oplysninger fra denne side.

Som et eksempel er min Facebook-kode:

Sub GetLikes () Dim IeApp som InternetExplorerDim sURL Som StringDim IeDoc som ObjectDim i Som Longdebugmode = Falsk Hvis debugmode Åbn derefter "c: VBAoutputvbaOutput.txt "Til tilføjes som nr. 1 'Opret ny forekomst af IE Set IeApp = New InternetExplorer' Gør det synligt - nogle ting fungerer ikke, medmindre det er synligt IeApp. Synlig = debugmode For hver mc I markering definerer siden, der skal åbnes sURL = mc 'Find kolonnen chkDate = Datoindstilling c = Område ("2: 2"). (chkDate) Hvis c ikke er noget, så er myCol = Range ("2: 2") Find (hvad: = "*", søgning: = xlPrevious) .Column + 1 Cells (1, myCol) = "Status" Celler (1, myCol + 1) = "Synes godt om" celler (1, myCol + 2) = "Links" celler (2, myCol) = chkDate celler (2, myCol + 1) = chkDate celler (2, myCol + 2) = chkDate Else myCol = c. Kolonneender Hvis 'mc. Offset (0, 1). Værdi = Dato er ned = mc. Offset (0, 3) .Value Hvis isDown = "Page Down" Så pageDown = "Page Down" numlikes = "" numlinks = "" doNothing = True Else 'naviger til siden IeApp. Naviger på SURL 'Pause makroen ved hjælp af en løkke, indtil siden er fuldt indlæst. Gør loop indtil IeApp. ReadyState = READYSTATE_COMPLETE 'gemme dokumentobjektet Set IeDoc = IeApp. Dokument ved fejl Genoptag næste koder = IeDoc. Body.innertext Hvis fejlagtig. Nummer 0 Derefter Fejl. Ryd GoTo skiploop Ende, hvis der er fejl GoTo 0 Hvis debugmode Skriv derefter nr. 1, koder & vbCrLf & vbCrLf numlinks = IeDoc. Links. Længde a = IeApp. Placeringsnavn 'Debug. Udskriv koder pageDown = True isPageStats = InStr (koder, "placePageStatsNumber") isGroup = InStr (koder, "uiButtonText> Deltag") isOldGroup = InStr (koder, "Denne gruppe er planlagt arkiveret ") isOpenGroup = InStr (koder," Åben gruppe ") isEvent = InStr (koder," Offentlig begivenhed ") isClosedGroup = InStr (koder," Lukket gruppe ") IsOpen = InStr (koder, a) erCommonInterest = InStr (koder, "fælles interesse") isMovie = InStr (koder, "Movieu003c") isNumberGiant = InStr (koder, "uiNumberGiant") notFound = InStr (koder, "Den side, du anmodede om, blev ikke fundet") profileUnavailable = InStr (a, "Profil utilgængelig") titlePos = InStr (koder, "") Hvis titlePos> 0 Derefter titlePos2 = InStr (titlePos, codes, "") Hvis titlePos> 0 Derefter titleName = Mid (koder, titelPos + 7, titelPos2 - titelPos - 7) Hvis isPageStats> 0 Derefter er isPageStats = isPageStats + 23 pos2 = InStr (isPageStats, koder, "") pageDown = "Aktuel" somTxt = Midt (koder, isPageStats, pos2 - isPageStats) ElseIf isGroup> 0 Derefter likeTxt = "n.k." pageDown = "Group" ElseIf isOldGroup> 0 Så lideTxt = "n.k." pageDown = "Gammel gruppe" ElseHvis isOpenGroup> 0 Derefter pos1 = InStr (isOpenGroup, koder, "Medlemmer (") + 9 pos2 = InStr (pos1, koder, ")") numMembers = Mid (codes, pos1, pos2 - pos1) pageDown = "Open Group" likeTxt = LTrim ( numMembers) ElseIf isEvent> 0 Derefter pos1 = InStr (1, koder, "Hjælpecenter") pos2 = InStr (pos1 + 1, koder, "Se alle") + 9 pos3 = InStr (pos2, koder, "Deltagende") - 1 Hvis pos3 = -1 Derefter pos1 = InStr (koder, "pagelet_event_guests_going") + 28 pos2 = InStr (pos1, koder, "> Going (") + 8 pos3 = InStr (pos2, codes, ")") numAttending = Mid (codes, pos2, pos3 - pos2) Ellers numAttending = Midt (koder, pos2, pos3 - pos2) 'pos2 - pos1) Ende Hvis likeTxt = LTrim (numAttending) pageDown = "Event" ElseIf isClosedGroup> 0 Så pageDown = "Closed Group" pos1 = InStr (isClosedGroup, koder, "Medlemmer") + 9 pos2 = InStr (pos1, koder, ")") likeTxt = Mid (koder, pos1, pos2 - pos1) ElseIf isNumberGiant> 0 Derefter pos2 = InStr (isNumberGiant, codes, ">") pos3 = InStr (pos2, koder, "") likeTxt = Midt (koder, pos2 + 1, pos3 - pos2 - 1) pageDown = "Aktuel" ElseIf isCommonInterest> 0 Så pageDown = "Common Interest" likeTxt = "n.k." Andet, hvis IsOpen> 0 And a "Facebook" Så pageDown = "Aktuel" somTxt = "n.k." ElseIf isMovie> 0 Derefter pageDown = "Film" likeTxt = "n.k." Slut Hvis If pageDown = Sandt, så pageDown = "Side ned" likeTxt = "n.a." numlinks = "n.a." Ende Hvis slut Hvis mc. Offset (0, myCol - 2) .Value = pageDown mc. Offset (0, myCol - 1) .Value = likeTxt mc. Offset (0, myCol - 0) = numlinksskiploop: pageDown = "" likeTxt = "" numlinks = "" Næste mc'Clean up IeApp. Afslut sæt IeApp = Intet hvis debugmode Luk derefter nr. 1 End Sub

Det er klodset, men gør jobbet.

Jeg gætter på, at alt, hvad jeg er efter, er, hvordan man udtrækker .Body.innertext fra en Google Chrome-forekomst.

Som Jeff sagde, ikke for at erstatte din browser, men for at bruge den til et specifikt program. Jeg har brugt denne metode to gange.

Jeg hører til en lokal hobbyklub, men du skal også være medlem af den nationale klub. Jeg brugte en Excel-forespørgsel til at gennemse vores medlemskab (efter nationalt medlems-ID-nummer) og kontrollere, at medlemmerne blev betalt i den nationale organisation. Men for et par år tilbage ændrede den nationale organisation de måde, deres websted kører, og webforespørgslen ville ikke længere fungere. Men denne metode tillader mig stadig hurtigt at gå gennem medlemskabet og visuelt verificere det nationale medlemskab. (Jeg integrerer browseren i en Excel-form, der samtidig viser vores lokale klubs medlemsoplysninger.)

Så i sidste uge, på arbejdspladsen, var vi nødt til at udføre en nøjagtighedsrevision af oplysningerne i ca. 10.000 billeder sammenligning af de oplysninger, der er taget på billedet, med de relaterede oplysninger i vores database og forsikring om, at de matchede. Så jeg havde brug for en måde, hvorpå brugerne hurtigt kunne se på et billede, indtaste nogle oplysninger indeholdt på billedet og gentage dette mere end 10.000 gange. Vi satte billederne på en webserver, og jeg brugte denne metode til at trække billedet ind i et browservindue på en Excel-indtastningsformular. Brugere ville se billedet, indtaste de krævede oplysninger på formularen til indtastning af data, trykke på enter-tasten og straks blive ført til det næste billede til gennemgang.

For applikationer som jeg har beskrevet ovenfor, er det ganske praktisk. Jeg vil sandsynligvis aldrig tage mig tid til at blive dygtig til noget 'mere seriøst' programmeringssprog, men jeg kan optage makroer og udpakke mig godt gennem VBA godt nok. Nøjagtighedsrevisionen tog mig mindre end en dag at fuldt udvikle, teste og implementere. Jeg behøvede ikke at trække udviklerressourcer fra deres tildelte opgaver (og jeg tvivler alvorligt på, at nogen af ​​vores Java- eller PL-SQL-udviklere kunne have gjort det hurtigere, end jeg gjorde ved hjælp af vanille Excel og VBA.