web表单的提交按钮 (webbrowser调用页面)

工作中有这样的场景,需要手动填写很多格式一样的表单,然后点击提交。如果数据在Excel中,一个个的copy,重复性工作太繁琐。今天就介绍一个实现网页自动化的控件--WebBrowser控件。

﹥﹥先给大家看看效果:(自动填写注册页面的表单数据)

web表单的提交按钮,web表单控件

这个效果稍做改变,加个循环,就可以实现批量填入网页表单数据,并自动提交。(备注:公司内部的表单一般是不会有验证码的,所以暂时不用考虑识别验证码的工作。)

这就是WebBrowser控件的强大之处。下面就教大家如何实现上述网页自动化的效果。

﹥﹥何为WebBrower?

WebBrowser 是微软提供的一个用于浏览网页的 ActiveX 控件,是植入在程序中一个控件,网页显示在窗体中.可以利用WebBrowser 对网页进行控制,进行一些操作。

在VBA中WebBrowser 控件插入到 VBA 的用户窗体、一般情况下,VBA 的控件工具箱中找不到该控件,需要在控件工具箱点击右键,在右键菜单中选择“附加控件”,在附加控件对话框中,找到“Microsoft Web Browser”并且勾选。

web表单的提交按钮,web表单控件

控件工具箱中出现一个地球形状的控件,这样就可以把该控件和其他控件一样,拖放到用户窗体中使用。

web表单的提交按钮,web表单控件

﹥﹥制作方法:

■第一步:拖拽控件到窗体上,添加两个按钮。一个是打开网页按钮,一个是填入数据按钮、一个点击【提交按钮】的按钮。(实际可以合为一个按钮,这里只是为了方便演示操作)

web表单的提交按钮,web表单控件

■第二步:分析网页结构,找出需要填写的表单文本框ID,还有提交按钮的ID。

网页F12调出开发者工具,可以看到,对应于网页上具体的控件内容,都有具体的html代码。

web表单的提交按钮,web表单控件

找到填写昵称的代码段,我们看到,昵称文本框的ID为"inputName",这就是我们需要的。用相同的方法,找到其他几个文本框的ID。

web表单的提交按钮,web表单控件

■第三步:双击"打开网页"按钮,填入以下代码;

Private Sub CommandButton1_Click()
 UserForm1.WebBrowser1.Navigate "http://zc.7k7k.com/"
 UserForm1.WebBrowser1.Silent = True’禁止安全弹窗提醒
End Sub

双击"填入数据"按钮,填入以下代码

Private Sub CommandButton2_Click()
 With UserForm1.WebBrowser1.Document
 .getElementById("inputName").Value = Range("a2")
 .getElementById("inputPwd").Value = Range("b2")
 .getElementById("inputRePwd").Value = Range("b2")
 .getElementById("inputRealName").Value = Range("c2")
 .getElementById("inputCardId").Value = Range("d2")
 End With
End Sub

双击"点击按钮"按钮,填入以下代码:(实现提交按钮的点击)

Private Sub CommandButton3_Click()
 Set doc = UserForm1.WebBrowser1.Document
 For i = 0 To doc.All.Length - 1
 If (LCase(doc.All(i).tagname)) = "input" Then
 If (LCase(doc.All(i).Type)) = "submit" Then
 Set tg = doc.All(i)
 tg.Click
 Exit Sub
 End If
 End If
 Next i
End Sub

这只是个简单的例子,复杂的网页需要具体的分析解决。

我们也可以利用WebBrowser控件提取网页的数据,因为网页都是加载成功后的数据,所以内容基本都能提取成功。