:ここ解決VBAの実行時間91エラー、私はエクセルVBAを使用して、ウェブサイトの入力フィールドに値を入力しようとしている
Dim FileN As Object
Set FileN = ie.document.getElementsByName("MsgNamePattern")
MsgBox (FileN)
If Not FileN Is Nothing And FileN.Length > 0 Then
FileN(0).Value = fileName
End If
は私が作った入力フィールド
<input name="MsgNamePattern" onblur="validateMessageName(this)" type="text" size="20">
のHTMLコードですオブジェクトを正常に設定すると "object HTMLinputelement"と言われるデバッグ用のMsgBoxが、何らかの理由でオブジェクト変数が設定されていないというランタイム91エラーが発生しています。私は次のコードで正常にサイトにログインしました:
Dim UserN As Object
Set UserN = ie.document.getElementsByName("userid")
MsgBox (UserN)
If Not UserN Is Nothing And UserN.Length > 0 Then
UserN(0).Value = "username"
End If
そして、MsgBoxは "object HTMLinputelement"を返します。ここでは、入力フィールドに、ログのHTMLは次のとおりです。
<input name="userid" class="inputStyle" onchange="document.login.password.focus();" type="text" size="20">
私が間違ってやっている私を見ていない、私は正常にログインするには、同じ方法を使用と思ったので、それはありませんなぜ私は混乱しています。ログイン後に検索フィールドのために働いて
はここで全体のコードです:
Sub getComponents()
Dim WebAddressIn As String
Dim ie As Object
Set ie = New InternetExplorer
WebAddressIn = "https://edx.standardandpoors.com/mailbox/jsp/login.jsp"
Set ie = CreateObject("internetexplorer.application")
ie.Navigate2 WebAddressIn
Do While (ie.Busy Or ie.readyState <> READYSTATE_COMPLETE)
DoEvents
Loop
ie.Visible = True
Dim UserN As Object ' MSHTML.IHTMLElement
Dim PW As Object ' MSHTML.IHTMLElement
Dim ElementCol As Object ' MSHTML.IHTMLElementCollection
Do While ie.Busy
Loop
' enter username and password in textboxes
Set UserN = ie.document.getElementsByName("userid")
MsgBox UserN
If Not UserN Is Nothing And UserN.Length > 0 Then
' fill in first element named "username", assumed to be the login name field
UserN(0).Value = "username"
End If
Set PW = ie.document.getElementsByName("password")
' password
If Not PW Is Nothing And PW.Length > 0 Then
' fill in first element named "password", assumed to be the password field
PW(0).Value = "password"
End If
Do While ie.Busy
Loop
Set ElementCol = ie.document.getElementsByName("submit")
MsgBox ElementCol
For Each btnInput In ElementCol
If btnInput.Value = "*Sign In" Then
btnInput.Click
Exit For
End If
Next btnInput
Do While ie.Busy
Loop
Do While (ie.Busy Or ie.readyState <> READYSTATE_COMPLETE)
DoEvents
Loop
Do Until ie.readyState = 4
Loop
Dim fileName As String
fileName = Format(Now(), "yyyyMMdd") & "_SPGSCI_PRE_STD.TXT"
Dim FileN As Object ' MSHTML.IHTMLElement
Dim SearchBox As Object ' MSHTML.IHTMLElementCollection
Do While ie.Busy
Loop
ie.Visible = False
ie.Visible = True
'Modified to add Tehscript's edit
'Set FileN = ie.document.getElementsByName("MsgNamePattern")
Do
On Error Resume Next
Set FileN = ie.document.getElementsByName("MsgNamePattern")(0)
Loop Until Err.Number <> 91
MsgBox FileN
If Not FileN Is Nothing And FileN.Length > 0 Then
FileN(0).Value = fileName
End If
Do While ie.Busy
Loop
Set SearchBox = ie.document.getElementsByTagName("a")
For Each l In SearchBox
If l.href = "javascript:myFunction('/mailbox/jsp/MBIList.jsp')" Then
l.Click
Exit For
End If
Next l
Do While ie.Busy
Loop
End Subの
あなたの問題に関連していません'Nothing'は' Length'プロパティを持たないので、 'UserN'が' Nothing'ならば、 'UserN'はNothingでUserN.Length> 0なら' Cr'はクラッシュします。 – YowE3K
'ie.document'は設定されていますか? FWIW 'UserN'オブジェクトが文字列として何かを返す* defaultプロパティ*を持たない場合、' MsgBox'呼び出しも爆発するでしょう:カッコを削除すると、パラメータが評価されて渡されます値として..は 'MsgBox UserN.Value'でなければなりません。 –
@ Mat's Mug MsgBoxを編集しましたが、何も変更されていないようです(まだ出力されているオブジェクト...)。ie.documentが設定されていることを確認するにはどうすればいいですか?私はまた、質問に自分のコード全体を追加しました。 – user90823745