Deine Email-Adresse wird nicht veröffentlicht. erforderliche Felder sind markiert *
Entschuldigung - ich habe nicht darüber nachgedacht, wie der Code im eingereichten Kommentar aussehen würde. Löschen Sie, wenn Sie möchten, und ich werde in einem besseren Format erneut posten.
Die Kommentare zu VBA als archaisch, ich habe es wirklich nützlich gefunden. Dadurch konnte ich einen einwöchigen Prozess in meinem Team in einen 10-minütigen Prozess verwandeln. Dadurch konnte ich die meisten Aktivitäten meines Teams reduzieren, indem ich fast alles automatisierte.
Sie konnten AD-Validierungen anwenden, Daten aus verschiedenen Betriebssystemdatenbanken extrahieren und alle lästigen SQL-Abfragen reduzieren, dann ausschneiden und einfügen.
Ein Job wurde geändert, für den mehrere Abfragen erforderlich waren, und mehrere E-Mails wurden manuell mit einem einzigen Klick generiert.
Ich liebe es absolut, archaisch oder nicht.
Ich habe vor einiger Zeit etwas in diese Richtung gefunden und eine Excel-basierte Anwendung entwickelt, mit der ich die Anzahl der "Likes" auf einer Reihe bestimmter Facebook-Seiten verfolgen konnte. Ich habe das seitdem erweitert, um VBA zu verwenden, um alle möglichen Informationen auf verschiedenen Websites zu erhalten.
Mein Problem im Moment ist, dass ich Probleme mit dem IE habe und dazu neige, Chrome zu verwenden.
Wie übersetze ich den oben genannten Code so, dass er dasselbe tut, aber Chrome als Browser verwendet? Ich kann einen Shell-Befehl verwenden, um den Chrome-Browser zu öffnen und zu einer bestimmten URL zu wechseln, kann jedoch nicht herausfinden, wie Informationen von dieser Seite extrahiert werden.
Mein Facebook-Code lautet beispielsweise:
Sub GetLikes () Dim IeApp als InternetExplorerDim sURL als StringDim IeDoc als ObjectDim i als Longdebugmode = False Wenn debugmode, dann öffne "c: VBAoutputvbaOutput.txt "Zum Anhängen als # 1 'Neue Instanz des IE erstellen Set IeApp = New InternetExplorer' Sichtbar machen - einige Dinge funktionieren nur, wenn es ist IeApp sichtbar. Visible = Debugmode Für jeden mc In Auswahl 'Definieren Sie die zu öffnende Seite. SURL = mc' Suchen Sie die Spalte chkDate = Datumssatz c = Bereich ("2: 2"). Suchen (chkDate) Wenn c nichts ist, dann ist myCol = Range ("2: 2"). Find (what: = "*", searchdirection: = xlPrevious) .Column + 1 Cells (1, myCol) = "Status" Cells (1, myCol + 1) = "Gefällt mir" -Zellen (1, myCol + 2) = "Links" -Zellen (2, myCol) = chkDate-Zellen (2, myCol + 1) = chkDate-Zellen (2, myCol + 2) = chkDate Else myCol = c. Spaltenende Wenn 'mc. Offset (0, 1) .Value = Date isDown = mc. Offset (0, 3) .Wert Wenn isDown = "Bild ab", dann pageDown = "Bild ab" numlikes = "" numlinks = "" doNothing = True Else 'navigieren Sie zur Seite IeApp. Navigieren Sie zu sURL 'Halten Sie das Makro mit einer Schleife an, bis die Seite vollständig geladen ist. Führen Sie eine Schleife bis zur IeApp durch. ReadyState = READYSTATE_COMPLETE 'speichert das Dokumentobjekt Set IeDoc = IeApp. Dokument bei Fehler fortsetzen Nächste Codes = IeDoc. Body.innertext Wenn Err. Nummer 0 Dann Err. Löschen Sie GoTo skiploop End If On Error GoTo 0 If debugmode Dann schreiben Sie # 1, Codes & vbCrLf & vbCrLf numlinks = IeDoc. Links. Länge a = IeApp. LocationName 'Debug. Codes drucken pageDown = True isPageStats = InStr (Codes, "placePageStatsNumber") isGroup = InStr (Codes, "uiButtonText> Join") isOldGroup = InStr (Codes, "Diese Gruppe ist geplant archiviert ") isOpenGroup = InStr (Codes," Offene Gruppe ") isEvent = InStr (Codes," Öffentliches Ereignis ") isClosedGroup = InStr (Codes," Geschlossene Gruppe ") IsOpen = InStr (Codes, a) isCommonInterest = InStr (Codes, "Common Interest") isMovie = InStr (Codes, "Movieu003c") isNumberGiant = InStr (Codes, "uiNumberGiant") notFound = InStr (Codes, "Die angeforderte Seite wurde nicht gefunden") profileUnavailable = InStr (a, "Profil nicht verfügbar") titlePos = InStr (Codes, "") Wenn titlePos> 0, dann titlePos2 = InStr (titlePos, Codes, "") Wenn titlePos> 0, dann titleName = Mid (Codes, titlePos + 7, titlePos2 - titlePos - 7) Wenn isPageStats> 0, dann isPageStats = isPageStats + 23 pos2 = InStr (isPageStats, Codes, "") pageDown = "Current" likeTxt = Mid (Codes, isPageStats, pos2 - isPageStats) ElseIf isGroup> 0 Dann likeTxt = "n.k." pageDown = "Group" ElseIf isOldGroup> 0 Dann likeTxt = "n.k." pageDown = "Alte Gruppe" ElseIf isOpenGroup> 0 Dann 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 Dann pos1 = InStr (1, Codes, "Hilfe") pos2 = InStr (pos1 + 1, Codes, "Alle anzeigen") + 9 pos3 = InStr (pos2, Codes, "Attending") - 1 If pos3 = -1 Dann pos1 = InStr (Codes, "pagelet_event_guests_going") + 28 pos2 = InStr (pos1, Codes, "> Going (") + 8 pos3 = InStr (pos2, Codes, ")") numAttending = Mid (Codes, pos2, pos3 - pos2) Sonst numAttending = Mid (Codes, pos2, pos3 - pos2) 'pos2 - pos1) End If likeTxt = LTrim (numAttending) pageDown = "Ereignis" ElseIf isClosedGroup> 0 Dann pageDown = "Closed Group" pos1 = InStr (isClosedGroup, Codes, "Mitglieder") + 9 pos2 = InStr (pos1, Codes, ")") likeTxt = Mid (Codes, pos1, pos2 - pos1) ElseIf isNumberGiant> 0 Dann pos2 = InStr (isNumberGiant, Codes, ">") pos3 = InStr (pos2, Codes, "") likeTxt = Mid (Codes, pos2 + 1, pos3 - pos2 - 1) pageDown = "Current" ElseIf isCommonInterest> 0 Dann pageDown = "Common Interest" likeTxt = "n.k." ElseIf IsOpen> 0 Und a "Facebook" Dann pageDown = "Current" likeTxt = "n.k." ElseIf isMovie> 0 Dann pageDown = "Movie" likeTxt = "n.k." End If If pageDown = True Then pageDown = "Bild ab" likeTxt = "n.a." numlinks = "n.a." Ende wenn Ende wenn mc. Offset (0, myCol - 2) .Value = pageDown mc. Offset (0, myCol - 1) .Value = likeTxt mc. Offset (0, myCol - 0) = numlinksskiploop: pageDown = "" likeTxt = "" numlinks = "" Next mc'Clean up IeApp. Beenden Set IeApp = Nothing Wenn Debug-Modus, dann schließen Sie # 1 End Sub
Es ist klobig, macht aber den Job.
Ich denke, alles, was ich brauche, ist, wie man .Body.innertext aus einer Google Chrome-Instanz extrahiert.
Wie Jeff sagte, nicht um Ihren Browser zu ersetzen, sondern um ihn für eine bestimmte Anwendung zu verwenden. Ich habe diese Methode zweimal angewendet.
Ich gehöre einem örtlichen Hobbyclub an, aber Sie müssen auch Mitglied des Nationalclubs sein. Ich habe eine Excel-Webanfrage verwendet, um unsere Mitgliedschaft (anhand der nationalen Mitglieds-ID-Nummer) zu durchlaufen und zu überprüfen, ob die Mitglieder in der nationalen Organisation bezahlt wurden. Vor einigen Jahren änderte die nationale Organisation die Art und Weise, wie ihre Website ausgeführt wird, und die Webanfrage würde nicht mehr funktionieren. Mit dieser Methode kann ich jedoch schnell durch die Mitgliedschaft blättern und die nationale Mitgliedschaft visuell überprüfen. (Ich binde den Browser in ein Excel-Formular ein, in dem gleichzeitig die Mitgliederinformationen unseres lokalen Clubs angezeigt werden.)
Dann mussten wir letzte Woche bei der Arbeit ein Genauigkeitsaudit der in etwa 10.000 Bildern enthaltenen Informationen durchführen. Vergleichen Sie die auf dem Bild erfassten Informationen mit den zugehörigen Informationen in unserer Datenbank und stellen Sie sicher, dass sie übereinstimmen. Daher brauchte ich eine Möglichkeit für Benutzer, ein Bild schnell anzusehen, einige auf dem Bild enthaltene Informationen einzugeben und dies immer wieder 10.000 Mal zu wiederholen. Wir haben die Bilder auf einen Webserver gestellt und mit dieser Methode habe ich das Bild in ein Browserfenster in einem Excel-Dateneingabeformular gezogen. Benutzer würden das Bild sehen, die erforderlichen Informationen in das Dateneingabeformular eingeben, die Eingabetaste drücken und sofort zum nächsten Bild zur Überprüfung weitergeleitet.
Für Anwendungen wie die oben beschriebenen ist es sehr praktisch. Ich werde mir wahrscheinlich nie die Zeit nehmen, mich mit einer "ernsteren" Programmiersprache vertraut zu machen, aber ich kann Makros aufnehmen und mich gut genug durch VBA schnippeln. Das Genauigkeitsaudit dauerte weniger als einen Tag, um es vollständig zu entwickeln, zu testen und umzusetzen. Ich musste die Entwicklerressourcen nicht von den zugewiesenen Aufgaben abziehen (und ich bezweifle ernsthaft, dass einer unserer Java- oder PL-SQL-Entwickler dies schneller hätte tun können als mit Vanilla Excel und VBA.