我对VBA全新,所以如果这个问题听起来很荒谬,我想提前道歉。我正在尝试创建一个允许我填写网络联系表单的脚本。我将在不同地方找到的不同代码组合在一起,结果似乎有效,但直到Web表单由于数据验证失败而引发错误的那一刻。
我现在要做的是添加一些代码,提醒我提交时出错,这样我就可以进入网页并手动检查。单独使用MsgBox
没有任何意义,因为它只会确认Click
操作的成功,而这不是我所追求的。我考虑过this approach,但OP会处理一个网络表单,确切地知道输出会是什么样子,而在我的情况下,这些将是不同网站上的不同表单,使用PHP,ASP等处理,所以我不确定一个统一的解决方案是什么样的,以及它是否有可能。
我很感激任何建议。
编辑:根据Prerak 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