web-dev-qa-db-ja.com

VBA-IE GetElementByIDが機能していません

正しいIDタグだと思った後、検索ボックスにテキストを入力するのに問題があります。ページのソースコードからIDを取得しました。私は以前に他のウェブサイトでこれを行いました。誰かが私を助けてくれますか?これを行う別の方法はありますか?

Sub FileUpload()

Dim IEexp as Object
IEexp.visible = True
IEexp.Navigate ("www.example.com")

'this is where the problem
IEexp.Document.GetElementByID("step1_id_bean_newSupportingDoc_description").Value _ 
= "monthly update"

End Sub

「呼び出されたオブジェクトがクライアントから切断されました」という自動化エラーが発生します

IDを取得したソースコード:

<td class="Label">Description</td>
  <td class="Data"><input type="text" name="bean.newSupportingDoc.description" size="60" maxlength="250" value="" id="step1_id_bean_newSupportingDoc_description" class="NoBorder"/>
</td>
7
Andy Caster

Set IEexp = New InternetExplorerMediumを使用する場合、インターネットオプションの設定を変更する必要はありません。 IEオブジェクトをMediumIntegrityApplication設定で自動的にインスタンス化します。

2
cyphi1

あなたが試すことができます

Do Until IEexp.readyState = 4
DoEvents
Loop



IEexp.Document.getElementById("username").Value = "Monthly update"


IEexp.Document.getElementById("password").Value = FilePth
0
user1902540

コードは機能します。 「保護モード」はどうですか?この記事を参照してください: http://www.sevenforums.com/tutorials/63141-internet-Explorer -protected-mode-turn-off.html 。 IEブラウザが保護モードで実行されている場合は、ブラウザをオフにして、コードを再実行してください。

' Add References:
' - Microsoft HTML Object Library
' - Microsoft Internet Controls

Sub FileUpload()

    Dim IEexp As InternetExplorer
    Set IEexp = New InternetExplorer
    IEexp.Visible = True
    IEexp.navigate "www.example.com"

    Do While IEexp.readyState <> 4: DoEvents: Loop

    Dim inputElement As HTMLInputElement
    Set inputElement = IEexp.Document.getElementById("step1_id_bean_newSupportingDoc_description")

    If (Not inputElement Is Nothing) Then
        inputElement.Value = "monthly update"
    Else
        MsgBox "Input element not found on web page."
    End If

    IEexp.Quit
    Set IEexp = Nothing
End Sub
0
dee