1

作業プロセス用のログインを作成しようとしています。一部の Web サイトは動作します。

このリンクは、ieObj が定義されていないことを除いて、ほぼ答えです。Internet Explorer での vba 自動化 - 連続する Web ページで別のボタンをクリックしても機能しませんか?

これが私が持っているものです。削ぎ落とした。斜体は変数参照です。通常、これはうまく機能します。このウェブサイトのボタンには「名前」がありません。クラス、Onclick、およびタイトルのみ (ただし、タイトルは "" null です)。私は.getelementbytagName(Button)、.getelementbyclassname("ButtonThemeA")、および他の多くのものを試しました。ボタンクリック部分で必ずエラーになります。

このボタンを参照してクリックするにはどうすればよいですか?

実行時エラー「438」が発生しました。オブジェクトはこのプロパティまたはメソッドをサポートしていません。

Sub Login1()

    Dim ieApp As InternetExplorer
    Dim ieDoc As Object
    Dim LoginVal As String
    Dim PassVal As String
    Dim ieForm As Object
    Dim ieObj As Object


    'create a new instance of ie
    Set ieApp = New InternetExplorer

    'you don’t need this, but it’s good for debugging
    ieApp.Visible = True

    'Login Screen
    ieApp.Navigate "*webpage to login*"
    Do While ieApp.Busy: DoEvents: Loop
    Do Until ieApp.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop

    'Get the login values
    LoginVal = Workbooks("Macrobook").Sheets("Login").Cells(2, 3).Value
    PassVal = Workbooks("Macrobook").Sheets("Login").Cells(2, 4).Value
    Set ieDoc = ieApp.Document

    'fill in the login form
    With ieDoc
        .getElementById("usr_name").Value = LoginVal
        .getElementById("usr_password").Value = PassVal
        .getElementbyTagName(button).Click
    End With
    Do While ieApp.Busy: DoEvents: Loop
    Do Until ieApp.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop

    'To acct list screen
    ieApp.Navigate "*Acct list URL - Not important for this question*"
    Do While ieApp.Busy: DoEvents: Loop
    Do Until ieApp.ReadyState = READYSTATE_COMPLETE: DoEvents: Loop

    'And it goes on from here.

End Sub
4

1 に答える 1

1

「送信」ボタンの場合は、名前 (またはそのボタンの ID) は必要ありません。必要なのはフォームの「id」です。次に、次のように言うことができます。iedocument.form("formname").submit

私はこのように使用します:

Sub website_newtitle()

    target_form = "model-node-form" '<-- THE FORM ID      
    target_url = ThisWorkbook.Sheets("models").Cells(1, 1).Value
    new_title = ThisWorkbook.Sheets("models").Cells(1, 2).Value

    'Modification
    Dim ie As New InternetExplorer
    Dim LookUpValue As String
    Dim HtmlDoc As HTMLDocument
    Dim SubmitInput As HTMLInputElement

    ie.Navigate target_url
    Do Until ie.ReadyState = READYSTATE_COMPLETE 'wait till the page is loaded
    Loop

    Set HtmlDoc = ie.document

    With ie
        .Visible = True 'disable to remain invisible
        .AddressBar = True
        .Toolbar = True
    End With

    HtmlDoc.forms(target_form).elements("edit-title").Value = new_title

    'submit data
    HtmlDoc.Forms(target_form).Submit '<-- SUBMIT THE FORM
    Do Until ie.ReadyState = READYSTATE_COMPLETE 'wait till the page is loaded

     'close window
     ie.Quit
End Sub
于 2013-08-02T17:58:16.020 に答える