Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1376to1380
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

Webabfrage mit Frames

Webabfrage mit Frames
01.09.2014 13:43:14
Michael
Moin Allerseits!
Ich verzweifle hier gerade und hoffe, Ihr könnt mir weiterhelfen.
Ich möchte mich via VBA bei SV-Net Online anmelden. Ich habe dazu ein kleines Script, dass die Anmeldung erledigen soll. Dummerweise hat die Site noch Frames. Ich kann die Frames zählen und auch die Elemente.
Aber bei Zugirff auf den Frame kommt eine Fehlermeldung, die mir nicht erklären kann. Ich habe recherchiert und es sollte eigentlich funktionieren. Habt Ihr einen Tipp?
Private Sub ImportVO_Click()
Dim objIEDoc As Object
Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.Application")
strURL = "https://www.gkvnet-ag.de/svnet-online/scripts/Anmeldung.asp?param=0000&login=1"
With objIE
.Visible = True
.Navigate2 strURL
Do While .ReadyState  4: DoEvents: Loop
Do While .Busy = True: DoEvents: Loop
'SIND FRAMES DA?
FrameStr = .Document.frames.Length
Länge = .Document.all.Length - 1
For i = 1 To Länge
Cells(i + 2, 3) = .Document.all(i).outerHTML
Next i
Länge = .Document.frames("svnetMainFrame").Document.all.Length - 1
Do While .ReadyState  4: DoEvents: Loop
Do While .Busy = True: DoEvents: Loop
Set objIEDoc = .Document
End With
Do: Loop Until objIEDoc.ReadyState  4
Set objIEDoc = Nothing
Set objIE = Nothing
End Sub

Vielen Dank für Eure Hilfe.
Michael H

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Webabfrage mit Frames
01.09.2014 14:33:14
Martin
Hallo Michael,
probiere es mal so:
Private Sub ImportVO_Click()
Dim objIEDoc As Object, objIE As Object
Dim strURL As String
Set objIE = CreateObject("InternetExplorer.Application")
strURL = "https://www.gkvnet-ag.de/svnet-online/scripts/Anmeldung.asp?param=0000&login=1"
With objIE
.Visible = True
.Navigate2 strURL
Do While .readyState  4: DoEvents: Loop
Do While .Busy = True: DoEvents: Loop
With .document.frames(1).document
'Betriebnr. eintragen
.getElementsByName("txtbn")(0).Value = "Betriebsnr."
'Benutzername eintragen
.getElementsByName("txtuser")(0).Value = "Benutzername"
'Kennwort eintragen
.getElementsByName("txtpwd")(0).Value = "Passwort"
'Formular abschicken
'.Forms(0).submit
End With
End With
Set objIEDoc = Nothing
Set objIE = Nothing
End Sub
Viele Grüße
Martin

Anzeige
AW: Webabfrage mit Frames
01.09.2014 15:14:13
Michael
Hallo Martin!
Vielen Dank für den Tipp. Geht leider nicht. Bereits bei
With .Document.frames(1).Document
kommt die Fehlermeldung "Automatisierungsfehler"!
Hast Du noch eine Idee?
VG
Michael H

AW: Webabfrage mit Frames
01.09.2014 15:48:07
Martin
Hallo Michael,
okay, dann sprechen wir den Frame halt namentlich an. So sollte es hoffentlich klappen:
Private Sub ImportVO_Click()
Dim objIEDoc As Object, objIE As Object
Dim strURL As String
Set objIE = CreateObject("InternetExplorer.Application")
strURL = "https://www.gkvnet-ag.de/svnet-online/scripts/Anmeldung.asp?param=0000&login=1"
With objIE
.Visible = True
.Navigate2 strURL
Do While .readyState  4: DoEvents: Loop
Do While .Busy = True: DoEvents: Loop
With .document.frames("svnetMainFrame").document
'Betriebnr. eintragen
.getElementsByName("txtbn")(0).Value = "Betriebsnr."
'Benutzername eintragen
.getElementsByName("txtuser")(0).Value = "Benutzername"
'Kennwort eintragen
.getElementsByName("txtpwd")(0).Value = "Passwort"
'Formular abschicken
'.Forms(0).submit
End With
End With
Set objIEDoc = Nothing
Set objIE = Nothing
End Sub
Viele Grüße
Martin

Anzeige
AW: Webabfrage mit Frames
01.09.2014 15:51:37
Michael
Hallo Martin!
Sorry, aber der gleiche Fehler an der gleichen Stelle.
VG
Michael H

AW: Webabfrage mit Frames
01.09.2014 15:56:02
Michael
Beitrag noch offen.

AW: Webabfrage mit Frames
01.09.2014 16:02:06
Martin
Hallo Michael,
ich bin offen zu dir: Bei mir funktionieren beide Makros, allerdings habe ich es unter Excel 2003 und dem veralteten Internet Explorer 8 probiert. Ich habe jetzt alles dynamisch programmiert, bitte teste mal das folgende Makro:
Sub ImportVO_Click()
Dim IEApp As Object, objForm As Object, objControl As Object
Dim i As Integer
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = True
IEApp.navigate "https://www.gkvnet-ag.de/svnet-online/scripts/Anmeldung.asp?param=0000& _
login=1"
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.document.readyState = "complete"
For i = 0 To IEApp.document.frames.Length - 1
For Each objForm In IEApp.document.frames(i).document.forms
For Each objControl In objForm.elements
With objControl
Select Case .Name
Case "txtbn"
.Value = "Betriebsnr."
Case "txtuser"
.Value = "Benutzername"
Case "txtpwd"
.Value = "Passwort"
End Select
End With
Next objControl
Next objForm
Next i
End Sub
Falls es jetzt noch immer nicht klappt, kann ich erst heute Abend unter Excel 2010 und einer aktuellen Internet Explorer-Version weiterprobieren.
Viele Grüße
Martin

Anzeige
AW: Webabfrage mit Frames
01.09.2014 16:34:31
Michael
Hallo Martin!
Danke, jetzt kommen wir dem näher. Ich habe das mal an zwei anderen rechnern gestartet. Ein anderer W7 mit Office 2010 liefert das gleiche Ergebnis mit dem Automatisierungsfehler.
Der XP Rechner mit Office 2007 und IE8 läuft durch. Ich habe die Mappe von diesem Rechner dann auf den ersten kopiert und nochmal ausgeführt. Die meldung ist jetzt eindeutiger:
>Die Methode 'frames' für das Objekt 'JScriptTypeInfo' ist fehlgeschlagen Ich google mal.
VG
Michael H

AW: Webabfrage mit Frames
01.09.2014 18:29:02
Michael
Ich habs!
Kein Frame mehr verwenden, sondern die Adresse des Frames unter IE11 direkt anwählen.
Private Sub ImportVO_Click()
Dim objIEDoc As Object
Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.Application")
With objIE
.Visible = True
.Navigate2 "https://www.gkvnet-ag.de/svnet-online/scripts/AnmeldungMain.asp"
Do While .readyState  4: DoEvents: Loop
Do While .Busy = True: DoEvents: Loop
With .Document
'Betriebsnummer eintragen
.getElementsByName("txtbn")(0).Value = "Betriebsnr."
'Benutzername eintragen
.getElementsByName("txtuser")(0).Value = "Benutzername"
'Kennwort eintragen
.getElementsByName("txtpwd")(0).Value = "Passwort"
'Formular abschicken
'.Forms(0).submit
End With
Do While .readyState  4: DoEvents: Loop
Do While .Busy = True: DoEvents: Loop
Set objIEDoc = .Document
End With
Do: Loop Until objIEDoc.readyState  4
Set objIEDoc = Nothing
Set objIE = Nothing
End Sub

Vielen Dank!
VG Michael H

Anzeige
AW: Webabfrage mit Frames
01.09.2014 20:47:56
Martin
Hallo Michael,
ich bin erst jetzt wieder zurück. Ich freue mich über Rückmeldungen immer sehr. Eigentlich hätte ich auch selbst auf die Idee kommen können die Seite ohne Frame aufzurufen. Ich werde jetzt trotzdem mal unter Windows 7 und Office 2010 testen, weil es auch mit Frame eine Lösung geben sollte.
Viele Grüße
Martin

....und so werden Frames angesprochen
02.09.2014 01:47:17
Martin
Hallo Michael,
hier zwei Beispiele, wie Frames angesprochen werden. Erfolgreich getestet mit Internet Explorer 8 und 11:
1. Frame als Index
Private Sub ImportVO_Click()
Dim objIEDoc As Object, objIE As Object
Dim strURL As String
Set objIE = CreateObject("InternetExplorer.Application")
strURL = "https://www.gkvnet-ag.de/svnet-online/scripts/Anmeldung.asp?param=0000&login=1"
With objIE
.Visible = True
.Navigate2 strURL
Do While .readyState  4: DoEvents: Loop
Do While .Busy = True: DoEvents: Loop
With .Document.Frames.Item(1).Document
'Betriebnr. eintragen
.getElementsByName("txtbn")(0).Value = "Betriebsnr."
'Benutzername eintragen
.getElementsByName("txtuser")(0).Value = "Benutzername"
'Kennwort eintragen
.getElementsByName("txtpwd")(0).Value = "Passwort"
'Formular abschicken
'.Forms(0).submit
End With
End With
Set objIEDoc = Nothing
Set objIE = Nothing
End Sub
2. Frame namentlich ansteuern
Private Sub ImportVO_Click2()
Dim objIEDoc As Object, objIE As Object
Dim strURL As String
Set objIE = CreateObject("InternetExplorer.Application")
strURL = "https://www.gkvnet-ag.de/svnet-online/scripts/Anmeldung.asp?param=0000&login=1"
With objIE
.Visible = True
.Navigate2 strURL
Do While .readyState  4: DoEvents: Loop
Do While .Busy = True: DoEvents: Loop
With .Document.Frames.Item("svnetMainFrame").Document
'Betriebnr. eintragen
.getElementsByName("txtbn")(0).Value = "Betriebsnr."
'Benutzername eintragen
.getElementsByName("txtuser")(0).Value = "Benutzername"
'Kennwort eintragen
.getElementsByName("txtpwd")(0).Value = "Passwort"
'Formular abschicken
'.Forms(0).submit
End With
End With
Set objIEDoc = Nothing
Set objIE = Nothing
End Sub
Viele Grüße
Martin

Anzeige
AW: ....und so werden Frames angesprochen
02.09.2014 09:11:06
Michael
Hallo Martin!
Vielen Dank! Ich habe auch noch recherchiert, aber die Nennung Item(1) ist nie da gewesen. Simpel, wenn man es weiß. Ich probiere mich dann mal weiter mit dem weiteren Aufruf und Ausfüllen des Formulars.
VG
Michael H

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige