VBA-Interaktionen mit dem internet explorer
Makro ich bin Gebäude nimmt die Namen aus einer Excel-Tabellenkalkulation, Internet Explorer geöffnet wird, und sucht in der online-Verzeichnis. Nach der Suche im Verzeichnis, es zieht sich ein Java-Formular mit dem Namen des MANAGERS in der it. Ich bin in der Lage, manuell-Registerkarte, um die manager-Namen, Rechte Maustaste, Verknüpfung kopieren, und dann schicken Sie es zurück auf die spread-sheet. Aber ich habe Probleme mit konsistente Tab-Reihenfolge und kopieren Sie die Verknüpfung.
- Gibt es eine einfache Möglichkeit zu bringen, den Fokus wieder auf das IE-Fenster?
- Wie kopieren Sie eine Verknüpfung, ohne manuell anklicken?
Code:
Sub Macro1()
'
Dim ie As Object
Set ie = CreateObject("internetexplorer.application")
ie.Visible = True
ie.navigate "****url****"
While ie.busy
DoEvents
Wend
ie.document.getElementById("SSOID").Value = "Z19516732"
ie.document.getElementById("Advanced").Checked = False
ie.document.all("Search").Click
'this loop is to slow the macro as the java form is filled from the search
For i = 1 To 400000000
i = i + 1
Next i
'ie.Object.Activate
ie.document.getElementById("Advanced").Checked = False
ie.document.getElementById("SSOID").Focus
Application.SendKeys "{TAB 6}" ', True
'bring up the control menu/right click
Application.SendKeys "+{F10}"
'copy shortcut is 8 items down on the list
Application.SendKeys "{DOWN}"
Application.SendKeys "{DOWN}"
Application.SendKeys "{DOWN}"
Application.SendKeys "{DOWN}"
Application.SendKeys "{DOWN}"
Application.SendKeys "{DOWN}"
Application.SendKeys "{DOWN}"
Application.SendKeys "{DOWN}"
'enter was not working so the shortcut for the menu is 't'
'SendKeys "{ENTER}"
Application.SendKeys "{t}"
Windows("Book21").Activate
Range("A1").Select
ActiveSheet.Paste
End Sub
Du musst angemeldet sein, um einen Kommentar abzugeben.
Am Anfang Ihres Moduls, setzen Sie diese Zeile von code:
Dies wird als eine
Declare-Anweisung
und ermöglicht Ihnen den Zugriff auf dieSetForegroundWindow
Funktion, die in Windows integriert ist. Diese Funktion lebt in denuser32
DLL von Windows-system. Es gibt tatsächlich eine Reihe von anderen Funktionen unter mehreren DLLs, die den Zugriff auf VBA in dieser Weise (siehe link für weitere Beispiele).In Ihrem code, während der Interaktion mit deinem IE-Objekt, Datensatz der
HWND
( Griff , um das Fenster zu) so:Dann, nachdem Sie interagiert mit Java, verwenden Sie diese, um fortzufahren:
Dieser teilt dem Windows-system zum festlegen der Fenster -, identifiziert durch die
HWND
als das Vordergrund-Fenster (wie der name schon sagt).Ist dies jedoch nicht notwendig sein, je nachdem, wie Sie die Interaktion mit dem IE. In anderen Worten, wenn Sie nicht brauchen, um zu sehen/berühren Sie das Fenster, können Sie immer noch die Interaktion mit dem Objekt, als du in deinem code schon.
Gibt es Möglichkeiten, um die Verknüpfung, die Sie suchen, verwenden Sie code wie
GetElementById()
undGetElementsByTagName()
(siehe hier für mehr info), aber es hängt davon ab, wie die Quelle erstellt wurde. z.B. ein<a href="...>
link sollte relativ leicht zu ziehen, wenn Sie wissen, die HTML-Quelle.Überprüfen Sie Ihren code ein zweites mal, habe ich bemerkt, dass Sie eine Schleife verwenden, die zu "verlangsamen" das makro. Ich habe eine Funktion, die ich die ganze Zeit nach ähnlichen Methoden meiner eigenen. Hoffentlich wird dies helfen, in die Sie immer getan haben, was Sie brauchen. Ich habe meine modifizierten code unten aus meiner eigenen original, da hatte ich zusätzliche Besonderheiten, die nicht für Ihren Fall. Wenn Fehler vorhanden sind, kann ich einstellen, wie gebraucht.
C:\Windows\System32\ieframe.dll
, aber dies kann variieren, für Sie. Auch die alternative in meiner Antwort...