Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 18815|回复: 8

[已解决]VBA如何调用已经打开的网页,而不是新开一个网页

[复制链接]
发表于 2014-3-5 22:09 | 显示全部楼层 |阅读模式
新开网页的方法我会了,代码如下:
Sub test1()
    With CreateObject("internetexplorer.application")
            .Visible = True
            .Navigate "h t t p : / / b b s .szonline.net/reg/register.aspx"
            Do Until .ReadyState = 4
                DoEvents
            Loop
        Set oDoc = .Document
       '下面代码为自动填充网页等的操作
        oDoc.all.ulive1.Value = “XXXXXXX“
    End With
End Sub

我想请教的是,我现在先打开" bbs.szonline.net/reg/ register.aspx“这个网页,再在Excel里的VBA调用这个打开的网页,该用什么语句?

请高手赐教!先谢谢了!
最佳答案
2014-3-7 10:18
  1. Function FindWin(ByVal strRef As String) As Object
  2.     '找寻已打开的、以strRef为开头网址的网页
  3.     Dim objWin As Object
  4.     For Each objWin In CreateObject("Shell.Application").Windows
  5.         Do While objWin.ReadyState <> 4 Or objWin.Busy
  6.             DoEvents
  7.         Loop
  8.         If LCase(TypeName(objWin.Document)) = "htmldocument" Then
  9.             If objWin.locationurl Like strRef & "*" Then
  10.                 Set FindWin = objWin
  11.                 Exit For
  12.             End If
  13.         End If
  14.     Next
  15.     Set objWin = Nothing
  16. End Function
复制代码
发表于 2014-3-6 08:22 | 显示全部楼层
把创建的对象引用先赋予对象变量,只要没释放,随时可以调用打开网址。
回复

使用道具 举报

发表于 2014-3-6 08:25 | 显示全部楼层
  1. Sub test1()
  2.     Dim ie As Object
  3.     Set ie = CreateObject("internetexplorer.application")
  4.     With ie
  5.         .Visible = True
  6.         .navigate "http://bbs.szonline.net/reg/register.aspx"
  7.         Do Until .ReadyState = 4
  8.             DoEvents
  9.         Loop
  10.         Set oDoc = .Document
  11.         '下面代码为自动填充网页等的操作
  12.         oDoc.all.ulive1.Value = "XXXXXXX"
  13.     End With
  14. End Sub
复制代码
把创建的对象引用赋予变量,这样你也方便调试,代码量也没增加多少。
只需调用Ie对象的方法就可以了。
回复

使用道具 举报

 楼主| 发表于 2014-3-6 21:42 | 显示全部楼层
本帖最后由 wanao2008 于 2014-3-6 21:44 编辑
hwc2ycy 发表于 2014-3-6 08:25
把创建的对象引用赋予变量,这样你也方便调试,代码量也没增加多少。
只需调用Ie对象的方法就可以了。


谢谢回答!你说的方法我会,但和我的实际想法还不太一样,我的意思是:

1、比如一个带有数据的网页,只有输入“用户名”和“密码”后才能打开查看;

2、我手动输入了“用户名”和“密码”后,进入到了数据页;

3、现在,就是现在,我打开Excel,然后想调用这个已经打开的数据页,怎么调用这个已经打开的页面(当前页)。

另:用EXCEL逐步输入密码然后进入的方法我会,我只想知道怎么调用当前打开的页面,而不是新开一个新页面。
回复

使用道具 举报

发表于 2014-3-6 23:01 | 显示全部楼层
当前页面,你可以访问IE对象获取。
回复

使用道具 举报

发表于 2014-3-7 10:18 | 显示全部楼层    本楼为最佳答案   
  1. Function FindWin(ByVal strRef As String) As Object
  2.     '找寻已打开的、以strRef为开头网址的网页
  3.     Dim objWin As Object
  4.     For Each objWin In CreateObject("Shell.Application").Windows
  5.         Do While objWin.ReadyState <> 4 Or objWin.Busy
  6.             DoEvents
  7.         Loop
  8.         If LCase(TypeName(objWin.Document)) = "htmldocument" Then
  9.             If objWin.locationurl Like strRef & "*" Then
  10.                 Set FindWin = objWin
  11.                 Exit For
  12.             End If
  13.         End If
  14.     Next
  15.     Set objWin = Nothing
  16. End Function
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-3-7 12:56 | 显示全部楼层
wcymiss 发表于 2014-3-7 10:18

你的答案太完美了,怎么给你加分?

非常感谢!

回复

使用道具 举报

 楼主| 发表于 2014-3-7 15:38 | 显示全部楼层
wcymiss 发表于 2014-3-7 10:18

这位老师你好,我又开了个新贴,关于如何用VBA自动填表的OBJECT类的问题,请问能解决吗?
贴名为:VBA自动填表单问题:如何操作OBJECT
非常感谢!
回复

使用道具 举报

发表于 2014-3-7 15:55 | 显示全部楼层
学习帮顶
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 14:57 , Processed in 0.293418 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表