Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1328to1332
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

vba - IE Instanz/tab korrekt ansprechen

vba - IE Instanz/tab korrekt ansprechen
20.09.2013 14:08:21
pjong
Hallo zusammen,
ich habe mit meinem Code eine Internetseite geöffnet, auf der ich einen Link anklicke, welcher wiederum einen neuen Tab öffnet. Bis hier hin klappt alles. Dann möchte ich den quellcode dieses 2. tabs auslesen.
Das klappt jedoch nicht, da ich nicht weis, wie ich den 2 tab aktiviere bzw anspeche.
Er liest wohl den Quellcode des ersten Fensters.
Ich hab schon 2 Tage gegoogelt und stehe jetzt auf dem Schlauch und bitte euch um Hilfe.
Letztendlich wird das ganze eine Schleife, die die oben beschrieben Prozedur 1000 mal macht. Somit wäre es ideal wenn anfänglich 1 IE Fenster aufgeht, bei dem dieser 2. Tab, der geöffnet wird, nach jeder Abfrage entweder geschlossen oder durch das erneute Linkanklicken übnerschrieben wird.
Wie gesagt, ich weis nicht wie ich den 2. Tab, (dessen URL ich nicht kenne und die auch jedes mal etwas unterschiedlich ist) anspreche.
Hier meine code:
Sub Decision_matrix()
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.Navigate "https://bla bla"
Do While ie.ReadyState  4
' Warten bis der IE die Site komplett geladen hat
Loop
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 3
waitTime = TimeSerial(newHour, newMinute, newSecond)
ie.Document.All.documentNumber.Value = "CFM56-5B 72-0803"
ie.Document.All.Search.Click
Do While ie.ReadyState  4
' Warten bis der IE die Site komplett geladen hat
Loop
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + 5
waitTime = TimeSerial(newHour, newMinute, newSecond)
Application.Wait waitTime
Do: Loop Until ie.Busy = False
Set AllhyperLinks = ie.Document.getElementsByTagName("a")
For Each hyper_link In AllhyperLinks
If InStr(1, hyper_link.innertext, "blub blub") Then
'MsgBox hyper_link
'ie.Quit
hyper_link.Click
Exit For
End If
Next
'

Function GetInternetWindow(urlToLookFor As String) As InternetExplorer
Application.Wait waitTime
Do: Loop Until ie.Busy = False
Quelltext = ie.Document.Body.InnerHtml
MsgBox (InStr(1, Quelltext, "tralala")) ' mit dieser MsgBox schaue ich, ob er das richtige  _
Fenster erwicht( dann Ausgabe "1"), da im richtigen fenster tralala steht. Sonst "0"
MsgBox Quelltext ' unwichtig
End Sub

Danke sehr im Voraus!

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
vba - IE Instanz/tab korrekt ansprechen
20.09.2013 16:47:38
Anton
Hallo pjong,
so vielleicht (ungetestet):
Code:

Sub b()
  Dim IEApp As Object, hyper_link As Object  
  Set IEApp = CreateObject("InternetExplorer.Application")  
  IEApp.Visible = True
  IEApp.Navigate "https://bla bla"
  Do: Loop Until IEApp.Busy = False    
  Do: Loop Until IEApp.Busy = False    
  Do: Loop Until IEApp.Document.ReadyState = "complete"    
  For Each hyper_link In IEApp.Document.getElementsByTagName("a")    
    If InStr(1, hyper_link.innertext, "blub blub") Then  
      IEApp.Navigate hyper_link.href
      Exit For  
    End If  
  Next
  Do: Loop Until IEApp.Busy = False    
  Do: Loop Until IEApp.Busy = False    
  Do: Loop Until IEApp.Document.ReadyState = "complete"    
  Debug.Print IEApp.Document.Body.innertext  
  Set IEApp = Nothing  
End Sub  


mfg Anton

Anzeige
AW: vba - IE Instanz/tab korrekt ansprechen
20.09.2013 16:54:17
Anton
Hallo nochmal,
Code:

Sub b()
  Dim IEApp As Object, hyper_link As Object  
  Set IEApp = CreateObject("InternetExplorer.Application")  
  IEApp.Visible = True
  IEApp.Navigate "https://bla bla"
  Do: Loop Until IEApp.Busy = False    
  Do: Loop Until IEApp.Busy = False    
  Do: Loop Until IEApp.Document.ReadyState = "complete"    
  IEApp.Document.All.documentNumber.Value = "CFM56-5B 72-0803"
  IEApp.Document.All.Search.Click
  Do: Loop Until IEApp.Busy = False    
  Do: Loop Until IEApp.Busy = False    
  Do: Loop Until IEApp.Document.ReadyState = "complete"    
  For Each hyper_link In IEApp.Document.getElementsByTagName("a")    
    If InStr(1, hyper_link.innertext, "blub blub") Then  
      IEApp.Navigate hyper_link.href
      Exit For  
    End If  
  Next
  Do: Loop Until IEApp.Busy = False    
  Do: Loop Until IEApp.Busy = False    
  Do: Loop Until IEApp.Document.ReadyState = "complete"    
  Debug.Print IEApp.Document.Body.innertext  
  Set IEApp = Nothing  
End Sub  


mfg Anton

Anzeige
AW: vba - IE Instanz/tab korrekt ansprechen
20.09.2013 17:46:15
pjong
Hallo und danke für die Antwort.
Dein Code ist ja schon mal etwas sauberer als meiner :-) Interessanter Trick mit den doppelten completed Abfragen. Damit kann ich wohl meine Wartezeit weglassen.
An der Stelle, wo der Link gesucht wird und angeklickt wird, passiert nun allerdings nichts mehr.
Das liegt denke ich daran, dass ich mich falsch ausgrückt habe. Dieser Link ist kein Link alá http\\www.bla.., sondern ein "HyperText Transfer Protocol with Privacy". (Hab mal unter Eigenschaften nachgeschaut) Also in meinem Fall ist das ein Dokumentenname, den ich anklicken kann, wodurch sich dann der 2. Tab öffnen soll, in dem das Dok. geöffnet wird.
Vll. hast du dafür noch einen anderen Ansatz?
Besten Dank!!

Anzeige
AW: vba - IE Instanz/tab korrekt ansprechen
20.09.2013 17:49:23
pjong
(Meinte natürlich doppelte "Loop Until IEApp.Busy = False" Schleife)

noch eine Variante
20.09.2013 19:02:52
Anton
Hallo pjong,
Code:

Sub b()
  Dim objShell As Object, win As Object  
  Set objShell = CreateObject("Shell.Application")  
  For Each win In objShell.Windows  
    If InStr(1, UCase(win.FullName), "IEXPLORE") > 0 Then    
      Debug.Print win.LocationURL & vbCr & win.Document.Body.innertext  
    End If  
  Next
  Set objShell = Nothing  
End Sub  


mfg Anton
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige