8

VBA を使用して Excel からオンラインの Web フォームにデータを送信しようとしています。問題は、フォームを選択して更新しようとしている*領域内で発生します。さまざまなオプション (ID、名前などで要素を取得) を試しましたが、成功しませんでした。この問題は、適切な要素を特定することに関係していると思います。VBA でローカル機能を使用することについてのアドバイスを見たことがありますが、この目的でそれを使用する方法がわかりません。経験のある人なら、ウェブサイトでソース コードを調べたり、VBA でローカルを使用したり、その他の手法を使用したりすることで、これを非常に迅速に理解できると思います。

フォームはすべてのフィールドがテキストになるように設定されており、問題なくオンラインでデータを入力/送信できます。

ヘルプ/提案をお寄せいただきありがとうございます。

Dim IE As Object

Sub submitFeedback3()
Application.ScreenUpdating = False

Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "http://spreadsheetbootcamp.com/excel-efficiency-trainer-feedback/"

Application.StatusBar = "Submitting"
  ' Wait while IE loading...
 While IE.Busy
 DoEvents
 Wend
 **********************************************************************
 IE.Document.getElementById("Form_Attempts-1372643500")(0).Value = "1"
 IE.Document.getElementById("submit-1-1372643500")(0).Click
 **********************************************************************
 Application.StatusBar = "Form Submitted"
 IE.Quit
 Set IE = Nothing

Application.ScreenUpdating = True
End Sub
4

1 に答える 1

5

以下のコードを試してください

Dim IE As Object

Sub submitFeedback3()
    Application.ScreenUpdating = False

    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    IE.Navigate "http://spreadsheetbootcamp.com/excel-efficiency-trainer-feedback/"

    Application.StatusBar = "Submitting"
    ' Wait while IE loading...
    While IE.Busy
        DoEvents
    Wend
    ' **********************************************************************
    delay 5
    IE.Document.getElementById("experience-1372700847").Value = "ddddd1"
    delay 5
    IE.Document.getElementById("Form_Time_Best-1372700847").Value = "ddddddddddd2"
    delay 5
    IE.Document.getElementById("submit-1-1372700847").Click
    '**********************************************************************
    Application.StatusBar = "Form Submitted"
    IE.Quit
    Set IE = Nothing

    Application.ScreenUpdating = True
End Sub

Private Sub delay(seconds As Long)
    Dim endTime As Date
    endTime = DateAdd("s", seconds, Now())
    Do While Now() < endTime
        DoEvents
    Loop
End Sub
于 2013-07-01T18:37:16.083 に答える