程序中判断网页是否已完全打开的问题

zydscaline 2009-05-11 07:32:30
Private Sub WebBrowser1_Document(ByValpDisp As Object, URL As Variant)
If Not (pDisp Is WebBrowser1.Object) Then Exit Sub

在网上找的判断网页是否完全打开全是以WebBrowser1_Document开头,但是我要的是自动把EXCELL表中的数据一个一个的填写上去,需要循环,并且要中间还要不断进入新的页面,我想能不能找个别的方法进行判断??
...全文
222 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zydscaline 2009-05-17
  • 打赏
  • 举报
回复
换一个来,大家看下可否?
Private Sub Command1_Click()
Dim ex As Object
Dim wb As Object
Dim sh As Object
Dim Doc as object
dim i as integer
Set ex = CreateObject("Excel.Application")
Set wb = ex.Workbooks.Open("c:\1.xls")
Set sh = wb.Sheets(1)
FOR i=2 to 200
Webbrowser1.Navigate "http://192.168.1.2" '打开需要的网页
Do While WebBrowser1.IsBusy
Application.DoEvents() '等待网页完全打开
Set Doc = WebBrowser1.Document
Doc("name").click ‘点一个按钮
Do While WebBrowser1.IsBusy
Application.DoEvents() '再等待网页完全打开
Doc("work")=sh.cells(i,2)
Doc("end").click
next

ex.Visible = True
Set ex = Nothing
Set wb = Nothing
Set sh = Nothing
end sub
zydscaline 2009-05-15
  • 打赏
  • 举报
回复
原来那个东西是写在TIMER里面的啊!
还有个问题,那就是循环怎么写?我是从EXCELL中提取数据,这样写行不?

大家给教下吧!

我这样写中不?
Private Sub WebBrowser1_Document(ByValpDisp As Object, URL As Variant)
'打开网页1 '再打开EXCELL
FOR i=1 to 300
If Not (pDisp Is WebBrowser1.Object) Then
For I = 1 To objDoc.All.Length - 1
If objDoc.All(I).Name = "username" Then
objDoc.All(I).Value = sh.cells(i,2) ‘填数据与点击
....................end if
'打开网页2
If Not (pDisp Is WebBrowser1.Object) Then
For I = 1 To objDoc.All.Length - 1
If objDoc.All(I).Name = "username1" Then
objDoc.All(I).Value = sh.cells(i,3)
。。。。。。。end if
NEXT

可否???
lyserver 2009-05-13
  • 打赏
  • 举报
回复
一般来说,你已经判断了网页是否完全打开了。
也可以用进一步在VB中获得body_onload事件进行判断。
具体思路是,增加一个类,在VB里新建一个类,再添加一个公共过程,通过工具菜单的过程属性将此过程设置默认,在DocumentComplete事件中将类绑定到body的onload事件中,具体语句为:set me.webbrowser1.Document.body.onload=new class1。
如果是使用了AJAX,则可以在脚本中自定义一个事件表示全部加载完毕,VB通过上述方法获得这个自定义事件进行判断。
zydscaline 2009-05-13
  • 打赏
  • 举报
回复
是不是以后还要的要用WebBrowser1_NavigateComplete3
WebBrowser1_NavigateComplete4??

用TIMER有一个缺点就是网络不稳定时或延时很长时他会出现错误。
由于网络不是很稳定,有时候很长时间他都不能完全打开网页,我只能用“是否完全下载页面”来判断,还请高手再帮下菜鸟.
aeaxea2 2009-05-13
  • 打赏
  • 举报
回复
补充一下
上面的代码 放在一个TINER控件中 没隔一秒检查一次
aeaxea2 2009-05-13
  • 打赏
  • 举报
回复
Dim doc As Object
Dim i As Object
Dim strHtml As String
on error resume next
Set doc = WebBrowser1.Document
For Each i In doc.All
strHtml = strHtml & Chr(13) & i.innertext
Next
getWebContent = strHtml

If InStr(getWebContent, "成功") > 0 Then
'自己的操作
end if
dycatv 2009-05-11
  • 打赏
  • 举报
回复
Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
....
End Sub

把填写数据写在TIMER里面,隔几秒填写一次

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧