提交Web表单后的VBA消息

时间:2015-02-05 15:02:24

标签: forms vba excel-vba excel

我对VBA全新,所以如果这个问题听起来很荒谬,我想提前道歉。我正在尝试创建一个允许我填写网络联系表单的脚本。我将在不同地方找到的不同代码组合在一起,结果似乎有效,但直到Web表单由于数据验证失败而引发错误的那一刻。

我现在要做的是添加一些代码,提醒我提交时出错,这样我就可以进入网页并手动检查。单独使用MsgBox没有任何意义,因为它只会确认Click操作的成功,而这不是我所追求的。我考虑过this approach,但OP会处理一个网络表单,确切地知道输出会是什么样子,而在我的情况下,这些将是不同网站上的不同表单,使用PHP,ASP等处理,所以我不确定一个统一的解决方案是什么样的,以及它是否有可能。

我很感激任何建议。

编辑:根据Prera​​k Sola的建议,这是我目前的代码。

Sub WebForm()
Dim IE As Object
Dim doc As Object
Dim PageText As String
Dim SearchText As String

Set IE = CreateObject("InternetExplorer.Application")

WebSite = Range("A2")

With IE
    .Visible = True
    .Navigate WebSite

    Do Until .ReadyState = 4: DoEvents: Loop

    frm = .Document.GetElementsByTagname("form")

    For Each element In frm.elements
       On Error Resume Next
       Select Case element.Name
          Case "name": element.Value = Sheets("Sheet1").[B2]
          Case "email": element.Value = Sheets("Sheet1").[C2]
          Case "message": element.Value = Sheets("Sheet1").[D2]
       End Select
    Next

    Set tags = .Document.GetElementsByTagname("input")

    For Each tagx In tags
        If tagx.Type = "submit" Then
            tagx.Click
        End If
    Next
    'it's fine until this point and here starts a mess
    SearchText = "valid"
    PageText = .Document.Body.InnerText
    If InStr(PageText, SearchText) > 0 Then
        MsgBox "Error"
    Else
        MsgBox "Success"
    End If

    Do Until .ReadyState = 4: DoEvents: Loop
    Do While .Busy: DoEvents: Loop

End With

End Sub

0 个答案:

没有答案