リモートでアクセスしている GUI にユーザー名とパスワードを入力しようとしています。
ここに私のコードがあります:
Dim UNBox As IHTMLInputElement
Dim PWBox As HTMLInputElement
Dim Login As HTMLInputElement
Dim doc As HTMLDocument
Dim LoginInfo As String
Dim UN As String
Dim PSW As String
Dim Webdoc As MSHTML.IHTMLElementCollection
Dim Element As MSHTML.IHTMLInputElement
Dim IE As Object
LoginInfo = CmbNetwork.Value
'launches IE and inputs IP address into the address bar then navigates to the GUI
Set IE = CreateObject("InternetExplorer.application")
IE.Visible = True
IE.navigate ThisWorkbook.Worksheets("Networks Info").Cells.Find(LoginInfo).Offset(rowoffset:=0, columnoffset:=8).Value
IE.Top = 0
IE.Left = 150
IE.Height = 700
IE.Width = 1000
'Pauses browser window while the GUI loads
Do While IE.readyState <> READYSTATE_COMPLETE
Application.Wait (Now + TimeValue("00:00:05"))
Loop
UN = ThisWorkbook.Worksheets("Networks Info").Cells.Find(LoginInfo).Offset(rowoffset:=0, columnoffset:=13)
PSW = ThisWorkbook.Worksheets("Networks Info").Cells.Find(LoginInfo).Offset(rowoffset:=0, columnoffset:=14)
If ThisWorkbook.Worksheets("Networks Info").Cells.Find(LoginInfo).Offset(rowoffset:=0, columnoffset:=12) = "ION-M" Then
Set Webdoc = IE.Document.getElementsByTagName("input")
'Loops through all elements in GUI
For Each Element In Webdoc 'READS THIS LINE
'Finds username text box element and inputs username
If Element.Name = "loginname" Then
Element.innerText = UN
'Finds password text box element and inputs password
ElseIf Element.Name = "loginpwrd" Then
Element.innerText = PSW
End If
Next Element
Set Element = Nothing 'SKIPS TO THIS LINE
私が抱えている問題は、コード (F8) をステップ実行して各行の実行を監視すると、For Each Next ループにヒットするとループがすべてスキップされることに気付きました。ユーザー名とパスワードのテキスト ボックスが html コードのテーブルに埋め込まれていることは知っています。
入力要素は、HTML コード ブロックGUI HTML コードの下部にあります...
<form name="myLogin" onsubmit="return setTimeDiff();" action="index.jsp" method="post">
<input name="loginTimeDiff" type="hidden" value="0"><table border="0">
<tbody>
<tr>
<td align="right">User Name:</td>
<td>
<input name="login" type="hidden" value="login">
<input name="loginname" id="login_name" type="text" size="20" maxlength="20">
</td>
</tr><tr>
<td align="right">Password:</td>
<td>
<input name="loginpwrd" onkeyup="zaehlen(this.value)" type="password" size="20" maxlength="8">
</td>
</tr>
<tr height="25"></tr><tr><td align="center" colspan="2">
<input type="submit" value=" Login "><input type="reset" value=" Reset ">
</td>
Set Webdoc = IE.Document.getElementsByTagName("input")
コードがテーブル内の入力タグを「認識」していない行にあるようです。バックアウトしてテーブル外のものを呼び出そうとすると、コードは完璧に機能します。
誰でも、これを引き起こしている原因を発見するのを手伝ってもらえますか. 追加の質問があれば喜んでお答えします。あなたが提供できる助けを前もってありがとう!