1

リモートでアクセスしている 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")コードがテーブル内の入力タグを「認識」していない行にあるようです。バックアウトしてテーブル外のものを呼び出そうとすると、コードは完璧に機能します。

誰でも、これを引き起こしている原因を発見するのを手伝ってもらえますか. 追加の質問があれば喜んでお答えします。あなたが提供できる助けを前もってありがとう!

4

0 に答える 0