Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *
Sorry - ik heb niet nagedacht over hoe de code eruit zou zien in de ingediende opmerking. Verwijder als je wilt en ik post opnieuw in een beter formaat.
Wat betreft de opmerkingen dat VBA archaïsch is, ik heb het echt nuttig gevonden. Hierdoor kon ik een proces van een week in mijn team omzetten in een proces van 10 minuten. Hierdoor kon ik de meeste activiteiten van mijn team terugschroeven door bijna alles te automatiseren.
In staat geweest om AD-validaties toe te passen, gegevens uit verschillende databases van operationele systemen te extraheren en alle vervelende SQL-query's te verminderen en vervolgens te knippen en plakken.
Veranderde een taak waarvoor meerdere vragen nodig waren, waarbij handmatig meerdere e-mails werden gegenereerd met een enkele klik op de knop.
Ik ben er helemaal weg van, archaïsch of niet.
Ik vond enige tijd geleden iets in deze trant en ontwikkelde een op Excel gebaseerde applicatie waarmee ik het aantal "Likes" op een reeks gespecificeerde Facebook-pagina's kon volgen. Ik heb dat sindsdien uitgebreid om VBA te gebruiken om allerlei informatie op verschillende websites te krijgen.
Mijn probleem op dit moment is dat ik wat problemen heb met IE en de neiging heb om Chrome te gebruiken.
Hoe vertaal ik het soort code dat je hierboven hebt, zodat het hetzelfde doet, maar Chrome als browser gebruikt. Ik kan een Shell-opdracht gebruiken om de Chrome-browser te openen en naar een specifieke URL te gaan, maar ik kan er niet achter komen hoe ik informatie van die pagina kan halen.
Mijn Facebook-code is bijvoorbeeld:
Sub GetLikes () Dim IeApp As InternetExplorerDim sURL As StringDim IeDoc As ObjectDim i As Longdebugmode = False If debugmode Open dan "c: VBAoutputvbaOutput.txt "Voor toevoegen als # 1 'Nieuw exemplaar van IE maken Set IeApp = New InternetExplorer' Maak het zichtbaar - sommige dingen werken niet tenzij het is zichtbare IeApp. Zichtbaar = debugmodus voor elke mc in selectie'definieer de pagina om te openen sURL = mc 'Zoek de kolom chkDate = Datum ingesteld c = Bereik ("2: 2"). (chkDate) Als c niets is dan myCol = bereik ("2: 2"). Zoek (wat: = "*", zoekrichting: = xlPrevious) .Column + 1 cellen (1, myCol) = "Status" cellen (1, myCol + 1) = "Likes" Cells (1, myCol + 2) = "Links" Cells (2, myCol) = chkDate Cells (2, myCol + 1) = chkDate Cells (2, myCol + 2) = chkDate Anders myCol = c. Column End If 'mc. Offset (0, 1). Waarde = Datum is Down = mc. Offset (0, 3). Waarde Als isDown = "Page Down" Dan pageDown = "Page Down" numlikes = "" numlinks = "" doNothing = True Else 'navigeer naar de pagina IeApp. Navigeren sURL 'Pauzeer de macro met behulp van een lus totdat de pagina volledig is geladen Doe lus tot IeApp. ReadyState = READYSTATE_COMPLETE 'slaat het documentobject Set IeDoc = IeApp op. Document bij fout Hervat volgende codes = IeDoc. Body.innertext Als Err. Nummer 0 Dan Err. Clear GoTo skiploop End If On Error GoTo 0 If debugmode Schrijf dan # 1, codes & vbCrLf & vbCrLf numlinks = IeDoc. Links. Lengte a = IeApp. LocationName 'Debug. Print codes pageDown = True isPageStats = InStr (codes, "placePageStatsNumber") isGroup = InStr (codes, "uiButtonText> Join") isOldGroup = InStr (codes, "Deze groep is gepland om gearchiveerd ") isOpenGroup = InStr (codes," Open Group ") isEvent = InStr (codes," Public Event ") isClosedGroup = InStr (codes," Closed Group ") IsOpen = InStr (codes, a) isCommonInterest = InStr (codes, "Common Interest") isMovie = InStr (codes, "Movieu003c") isNumberGiant = InStr (codes, "uiNumberGiant") notFound = InStr (codes, "De opgevraagde pagina is niet gevonden") profileUnavailable = InStr (a, "Profile Unavailable") titlePos = InStr (codes, "") If titlePos> 0 Dan titlePos2 = InStr (titlePos, codes, "") If titlePos> 0 Dan titleName = Mid (codes, titlePos + 7, titlePos2 - titlePos - 7) Als isPageStats> 0 Dan isPPageStats = isPageStats + 23 pos2 = InStr (isPageStats, codes, "") pageDown = "Current" likeTxt = Mid (codes, isPageStats, pos2 - isPageStats) ElseIf isGroup> 0 Dan likeTxt = "n.k." pageDown = "Group" ElseIf isOldGroup> 0 Dan likeTxt = "n.k." pageDown = "Old Group" ElseIf isOpenGroup> 0 Dan pos1 = InStr (isOpenGroup, codes, "Members (") + 9 pos2 = InStr (pos1, codes, ")") numMembers = Mid (codes, pos1, pos2 - pos1) pageDown = "Open Group" likeTxt = LTrim ( numMembers) ElseIf isEvent> 0 Dan pos1 = InStr (1, codes, "Help Center") pos2 = InStr (pos1 + 1, codes, "See All") + 9 pos3 = InStr (pos2, codes, "Attending") - 1 Als pos3 = -1 Dan pos1 = InStr (codes, "pagelet_event_guests_going") + 28 pos2 = InStr (pos1, codes, "> Going (") + 8 pos3 = InStr (pos2, codes, ")") numAttending = Mid (codes, pos2, pos3 - pos2) Anders numAttending = Midden (codes, pos2, pos3 - pos2) 'pos2 - pos1) Einde Als likeTxt = LTrim (numAttending) pageDown = "Event" ElseIf isClosedGroup> 0 Dan pageDown = "Gesloten groep" pos1 = InStr (isClosedGroup, codes, "Leden") + 9 pos2 = InStr (pos1, codes, ")") likeTxt = Mid (codes, pos1, pos2 - pos1) ElseIf isNumberGiant> 0 Dan pos2 = InStr (isNumberGiant, codes, ">") pos3 = InStr (pos2, codes, "") likeTxt = Mid (codes, pos2 + 1, pos3 - pos2 - 1) pageDown = "Current" Anders is IsCommonInterest> 0 Dan pageDown = "Common Interest" likeTxt = "n.k." Anders IsOpen> 0 En een "Facebook" Vervolgens pageDown = "Huidig" likeTxt = "n.k." ElseIf isMovie> 0 Dan pageDown = "Movie" likeTxt = "n.k." End If If pageDown = True Then pageDown = "Page Down" likeTxt = "n.a." numlinks = "n.v.t." End If End If mc. Offset (0, myCol - 2). Waarde = pageDown mc. Offset (0, myCol - 1). Waarde = likeTxt mc. Offset (0, myCol - 0) = numlinksskiploop: pageDown = "" likeTxt = "" numlinks = "" Volgende mc'Clean IeApp op. Quit Set IeApp = Nothing If debugmode Sluit vervolgens # 1 End Sub
Het is onhandig maar doet zijn werk.
Ik denk dat ik alleen maar ben. Hoe .Body.innertext uit een Google Chrome-instantie te extraheren.
Zoals Jeff zei, niet om je browser te vervangen, maar om hem te gebruiken voor een specifieke applicatie. Ik heb deze methode twee keer gebruikt.
Ik behoor tot een plaatselijke hobbyclub, maar je moet ook lid zijn van de nationale club. Ik gebruikte een Excel-webquery om door ons lidmaatschap te bladeren (op basis van het nationale lidmaatschapsnummer) en om te controleren of leden waren betaald in de nationale organisatie. Maar een paar jaar geleden veranderde de nationale organisatie de manier waarop hun site draait en werkte de webquery niet meer. Maar met deze methode kan ik nog steeds snel door het lidmaatschap bladeren en het nationale lidmaatschap visueel verifiëren. (Ik sluit de browser in een Excel-formulier in dat tegelijkertijd de ledeninformatie van onze lokale club weergeeft.)
Vorige week moesten we op het werk een nauwkeurigheidscontrole uitvoeren op de informatie in ongeveer 10.000 afbeeldingen; de informatie die op de afbeelding is vastgelegd te vergelijken met de gerelateerde informatie in onze database en ervoor te zorgen dat ze overeenkomen. Dus ik had een manier nodig waarop gebruikers snel naar een afbeelding konden kijken, wat informatie op de afbeelding in konden typen en dit keer op keer 10.000 keer konden herhalen. We plaatsten de afbeeldingen op een webserver en ik gebruikte deze methode om de afbeelding in een browservenster op een Excel-gegevensinvoerformulier te trekken. Gebruikers zouden de afbeelding zien, de vereiste informatie op het gegevensinvoerformulier intypen, op de enter-toets drukken en onmiddellijk naar de volgende afbeelding worden gebracht voor beoordeling.
Voor applicaties zoals ik hierboven heb beschreven, is het best handig. Ik zal waarschijnlijk nooit de tijd nemen om bekwaam te worden in een 'serieuzere' programmeertaal, maar ik kan macro's opnemen en me een weg banen door VBA. De nauwkeurigheidscontrole kostte me minder dan een dag om volledig te ontwikkelen, testen en implementeren. Ik hoefde de bronnen voor ontwikkelaars niet van hun toegewezen taken af te halen (en ik betwijfel ernstig of een van onze Java- of PL-SQL-ontwikkelaars het sneller had kunnen doen dan ik deed met vanilla Excel en VBA.