AW: Login Eintragen über DOM
28.05.2017 16:31:41
Florian
Alles klar, das werde ich gleich ändern / testen.
Jedoch scheine ich leider noch einen Fehler in meiner "eingeloggt" Sub zu haben.
Diese wird über Workbook_open geöffnet:
Private Sub Workbook_Open()
Dim Datum As String
Datum = Format(Date, "dd.mm.yyyy")
Dim letztezeile As Long
With ThisWorkbook.Worksheets("Farm")
letztezeile = .Cells(Rows.Count, 6).End(xlUp).Row
'Abfrage ob es eine Spalte für heutige Einnahmen gibt
If .Range(cSchreibSpalte & "1").Value Datum Then
.Columns(cSchreibSpalte & ":" & cSchreibSpalte).Insert Shift:=xlToRight, CopyOrigin: _
=xlFormatFromRightOrBelow
.Range(cSchreibSpalte & "1").Value = Format(Date, "dd.mm.yyyy")
.Range(cSchreibSpalte & letztezeile).Formula = "=SUM(" & cSchreibSpalte & "2:" & _
cSchreibSpalte & letztezeile - 1 & ")"
End If
End With
Application.Wait (Now + TimeValue("00:00:02"))
Call eingeloggt
End Sub
Der Code ist dann der folgende:
Option Explicit
Public Sub eingeloggt()
Dim Server As Long
Dim URL As String
Dim oIE As Object
Dim knotenAst As Object
Dim bolLogin As Boolean
Server = ThisWorkbook.Worksheets("Einstellungen").Range("B1")
URL = "https://s" & Server & "-de.battleknight.gameforge.com/world"
'Internetexplorer starten
Set oIE = CreateObject("InternetExplorer.Application")
oIE.Visible = False
oIE.Navigate URL
' Warten, bis die Seite geladen ist
Do While oIE.busy: DoEvents: Loop
Set knotenAst = oIE.document.GetElementsByClassName("startFields")(0)
If Not knotenAst Is Nothing Then
bolLogin = False
Else
bolLogin = True
End If
'Explorer beenden
oIE.Quit
Set oIE = Nothing
ThisWorkbook.Worksheets("Einstellungen").Range("B6") = bolLogin
End Sub
Im eingeloggten Zustand ist alles tutti.
Im ausgeloggten Zustand bekomme ich manchmal den Fehler 438 (Objekt unterstützt Eigenschaft oder Methode nicht)
Die Stelle Set knotenAst ist dabei gelb.
Jedoch kann ich mir dies nicht erklären, denn wenn ich nicht eingeloggt bin (und die oben gepostete Seite geladen wird - was IMMER der Fall ist) muss das Objekt knotenAst doch gebildet werden können.
Wo ist denn hier mein Denkfehler?