E-postadressen din vil ikke offentliggjøres. Nødvendige felt er merket *
Beklager - tenkte ikke på hvordan koden ville se ut i den innsendte kommentaren. Slett om du vil, så poster jeg på nytt i et bedre format.
Når det gjelder kommentarene om at VBA er arkaisk, har jeg syntes det er veldig nyttig. Det tillot meg å gjøre en uke lang prosess i teamet mitt til en 10 minutters prosess. Det tillot meg å avskalere de fleste aktivitetene teamet mitt gjør ved å automatisere nesten alt.
Har vært i stand til å bruke AD-valideringer, trekke ut data fra forskjellige databaser med operativsystemer og kutte ned alle de irriterende SQL-spørsmålene og deretter kutte og lime inn.
Endret en jobb som krevde flere spørsmål, manuelt genererte flere e-postmeldinger til ett enkelt klikk.
Jeg elsker det absolutt, arkaisk eller ikke.
Jeg fant noe langs disse linjene for en tid tilbake og utviklet en Excel-basert applikasjon som tillot meg å spore antall "Likes" på et sett med spesifiserte Facebook-sider. Jeg har siden utvidet det til å bruke VBA for å få all slags informasjon på forskjellige nettsteder.
Problemet mitt for øyeblikket er at jeg har litt problemer med IE og pleier å bruke Chrome.
Hvordan oversetter jeg koden du har ovenfor, slik at den gjør det samme, men bruker Chrome som nettleser. Jeg kan bruke en Shell-kommando for å åpne Chrome-nettleseren og gå til en spesifikk URL, men kan ikke finne ut hvordan jeg kan hente ut informasjon fra den siden.
Som et eksempel er min Facebook-kode:
Sub GetLikes () Dim IeApp Som InternetExplorerDim sURL As StringDim IeDoc Som ObjectDim i Som Longdebugmode = False Hvis debugmode Åpne deretter "c: VBAoutputvbaOutput.txt "For vedlegg som # 1 'Lag ny forekomst av IE Set IeApp = New InternetExplorer' Gjør det synlig - noen ting fungerer ikke med mindre det er synlig IeApp. Synlig = feilsøkingsmode for hver mc i valgdefinerer siden som skal åpnes sURL = mc 'Finn kolonnen chkDate = Datoinnstilling c = Område ("2: 2"). (chkDate) Hvis c er ingenting, så er myCol = Range ("2: 2"). Finn (hva: = "*", søkedireksjon: = xlPrevious) .Column + 1 Cells (1, myCol) = "Status" Cells (1, myCol + 1) = "Likes" celler (1, myCol + 2) = "Koblinger" celler (2, myCol) = chkDate celler (2, myCol + 1) = chkDate celler (2, myCol + 2) = chkDate annet myCol = c. Kolonne Slutt Hvis 'mc. Offset (0, 1). Verdi = Dato er ned = mc. Offset (0, 3) .Value If isDown = "Page Down" Så pageDown = "Page Down" numlikes = "" numlinks = "" doNothing = True Else 'naviger til siden IeApp. Naviger på SURL 'Stopp makroen med en løkke til siden er fullastet. Gjør loop til IeApp. ReadyState = READYSTATE_COMPLETE 'lagrer dokumentobjektet Sett IeDoc = IeApp. Dokument ved feil Fortsett Neste koder = IeDoc. Body.innertext Hvis feil. Nummer 0 Deretter Err. Tøm GoTo skiploop Slutt Hvis det er feil Feil GoTo 0 Hvis feilsøkingsmode. Skriv deretter nr. 1, koder & vbCrLf & vbCrLf numlinks = IeDoc. Koblinger. Lengde a = IeApp. LocationName 'Feilsøking. Skriv ut koder pageDown = True isPageStats = InStr (koder, "placePageStatsNumber") isGroup = InStr (koder, "uiButtonText> Delta") isOldGroup = InStr (koder, "Denne gruppen er planlagt arkivert ") isOpenGroup = InStr (koder," Open Group ") isEvent = InStr (koder," Public Event ") isClosedGroup = InStr (koder," Closed Group ") IsOpen = InStr (codes, a) isCommonInterest = InStr (koder, "Vanlig interesse") isMovie = InStr (koder, "Movieu003c") isNumberGiant = InStr (koder, "uiNumberGiant") notFound = InStr (koder, "Siden du ba om ble ikke funnet") profileUnavailable = InStr (a, "Profil utilgjengelig") titlePos = InStr (koder, "") Hvis titlePos> 0 Da titlePos2 = InStr (titlePos, codes, "") Hvis titlePos> 0 Da titleName = Mid (koder, titlePos + 7, titlePos2 - titlePos - 7) Hvis isPageStats> 0 Da isPageStats = isPageStats + 23 pos2 = InStr (isPageStats, codes, "") pageDown = "Current" likeTxt = Mid (codes, isPageStats, pos2 - isPageStats) EllersHvis isGroup> 0 Så likerTxt = "n.k." pageDown = "Group" ElseIf isOldGroup> 0 Så likerTxt = "n.k." pageDown = "Gammel gruppe" ElseHvis isOpenGroup> 0 Deretter pos1 = InStr (isOpenGroup, koder, "Members (") + 9 pos2 = InStr (pos1, codes, ")") numMembers = Mid (codes, pos1, pos2 - pos1) pageDown = "Open Group" likeTxt = LTrim ( numMembers) ElseIf isEvent> 0 Da pos1 = InStr (1, koder, "Help Center") pos2 = InStr (pos1 + 1, koder, "See All") + 9 pos3 = InStr (pos2, codes, "Attending") - 1 Hvis pos3 = -1 Da pos1 = InStr (koder, "pagelet_event_guests_going") + 28 pos2 = InStr (pos1, koder, "> Going (") + 8 pos3 = InStr (pos2, codes, ")") numAttending = Midt (koder, pos2, pos3 - pos2) Ellers numAttending = Midt (koder, pos2, pos3 - pos2) 'pos2 - pos1) Slutt Hvis likeTxt = LTrim (numAttending) pageDown = "Event" ElseIf isClosedGroup> 0 Then pageDown = "Closed Group" pos1 = InStr (isClosedGroup, koder, "Medlemmer") + 9 pos2 = InStr (pos1, koder, ")") likeTxt = Midt (koder, pos1, pos2 - pos1) ElseIf isNumberGiant> 0 Så pos2 = InStr (isNumberGiant, codes, ">") pos3 = InStr (pos2, koder, "") likeTxt = Midt (koder, pos2 + 1, pos3 - pos2 - 1) pageDown = "Current" ElseIf isCommonInterest> 0 Then pageDown = "Common Interest" likeTxt = "n.k." Hvis IsOpen> 0 og a "Facebook" Så pageDown = "Nåværende" likeTxt = "n.k." ElseIf isMovie> 0 Så pageDown = "Film" likeTxt = "n.k." Slutt Hvis If pageDown = True Så pageDown = "Page Down" likeTxt = "n.a." numlinks = "n.a." Slutt Hvis Slutt Hvis mc. Offset (0, myCol - 2) .Value = pageDown mc. Offset (0, myCol - 1). Verdi = likeTxt mc. Offset (0, myCol - 0) = numlinksskiploop: pageDown = "" likeTxt = "" numlinks = "" Neste mc'Clean up IeApp. Avslutt sett IeApp = Ingenting hvis feilsøkingsmode, lukk deretter nr. 1 End Sub
Det er klumpete, men gjør jobben.
Jeg antar at alt jeg er ute etter er å trekke ut .Body.innertext fra en Google Chrome-forekomst.
Som Jeff sa, ikke for å erstatte nettleseren din, men for å bruke den til et spesifikt program. Jeg har brukt denne metoden to ganger.
Jeg tilhører en lokal hobbyklubb, men du må også være medlem av den nasjonale klubben. Jeg pleide å bruke en Excel-nett-spørring for å bla gjennom medlemskapet vårt (etter ID-nummer fra nasjonalt medlem) og bekrefte at medlemmene ble betalt opp i den nasjonale organisasjonen. Men for noen år tilbake endret den nasjonale organisasjonen hvordan nettstedet deres kjøres, og webspørringen ville ikke lenger fungere. Men denne metoden lar meg fortsatt raskt bla gjennom medlemskapet og visuelt bekrefte det nasjonale medlemskapet. (Jeg legger inn nettleseren i et Excel-skjema som samtidig viser den lokale klubbens medlemsinformasjon.)
Deretter i forrige uke, på jobb, trengte vi å utføre en nøyaktighetsrevisjon av informasjonen i omtrent 10.000 bilder; sammenligne informasjonen som er tatt på bildet, med den relaterte informasjonen i databasen vår og forsikre deg om at de stemte overens. Så jeg trengte en måte for brukere å raskt se på et bilde, skrive inn litt informasjon på bildet og gjenta dette over og over 10 000 ganger. Vi la bildene på en webserver, og jeg brukte denne metoden for å trekke bildet inn i et nettleservindu på et Excel-dataregistreringsskjema. Brukere ville se bildet, skrive inn den nødvendige informasjonen på dataregistreringsskjemaet, trykke på enter-tasten og umiddelbart bli tatt til neste bilde for gjennomgang.
For applikasjoner som jeg har beskrevet ovenfor, er det ganske nyttig. Jeg kommer sannsynligvis aldri til å ta meg tid til å bli dyktig i noe "mer seriøst" programmeringsspråk, men jeg kan ta opp makroer og snakke meg godt gjennom VBA godt nok. Nøyaktighetsrevisjonen tok meg mindre enn en dag å fullt utvikle, teste og implementere. Jeg trengte ikke å trekke utviklerressursene fra tildelte oppgaver (og jeg tviler alvorlig på at noen av våre Java- eller PL-SQL-utviklere kunne ha gjort det raskere enn jeg gjorde ved å bruke vanilje Excel og VBA.