关键词不能为空

当前您在: 主页 > 英语 >

VBA中的IE对象操作

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-28 05:35
tags:

-

2021年2月28日发(作者:不屑)


IE


和文档对象模型



我们在实际工作中遇到网站和网页相关往往要涉及到这类问题:


如何下载网页数据?网页 之


间的通讯是怎么实现的、


它们能不能被控制等等。

< p>
分析网页根据不同协变色镜可以用不同的


角度去看,如数据流、标记,不过 ,如果你是用


VB/VBA/


脚本或其它支持自动化对象



AUTOMATION


)的语言编程,有一 个值得了解方法是掌握对象模型,将网页视为对象来


自行控制,


这个方法需要了解的是


IE


的自动化对象


(InternetExplorer


.Application)

< br>或


IE


控件


< br>Microsoft Internet Controls


< br>,以及标准的文档对象模型(


Document




以下代码在


VBA


环境下进行试验——我不在意你是用


WORD


还是


EXCEL


——可以先做一行


过程模块,也可以在立 即窗口下逐行输入:




Set


ieA


=


CreateObject(



‘创建对象



e


=


True




‘使


IE


页 面可见,做完这一步,在


VBA


之外可以看到一个新

< p>


IE


te





‘空白页



这几行代码的作用是创建一 个


IE


应用程序对象(是的,相当于一个


IE


应用程序)


,并打开


一个空白的 网页。这个网页独立于


VBA


的应用程序(

WORD



EXCEL


)之外,事 实上,你


必须自已关掉它,或者用



下令 退出——注意一下,单纯的关闭


VBA



SET


ieA=nothing


是不会退出这个网页的。当 然,如果你正在上网并且愿意,在第


3


行也可以将



3


行的字符串替换成一个网站的名字,或者替换成 一个你主机中的文档名——比如


C:




D:



正如你在

IE


地址栏输入名称浏览这些文档一样。


另一种

< p>
可选择的方法是直接在


VB/VBA


的窗体或工作 表等宿主上增加一个的


WEB


BROWS

< br>浏览器


控件,也相当于上面的


IE


应用程序



注:


WEB

< p>
BROWSE


控件和单独的


IE

< br>程序并不是完全相同的,例如


WEB


控件不能用


QUIT


方法退出,


IE



NAVIGETE


方法没有复杂的


POST


参数,但文档对象都可以用同样的方法


引用,大部分事 件和方法也通用



另外,如果访问一个已经存在的网页,例如< /p>


/


,因为可能产生异


步的延时,所以如果 不是立即窗口,往往根据


READYSTATE


的状态保证网页 加载完毕:



SUB


LOADIE()






在代码的常见的处理情况



Set


ieA


=


CreateObject(


e


=


True


te



/




‘←打开某个网页,要一定时间,但代码会往


下执行


DO


UNTIL


tate=4







检查网 页是否加载完毕(


4


表示完全加载)






DOEVENTS



















循环中交回工作权限给系统,以免“软死机”



LOOP



END


SUB


如果对这个


IE


应用程序对象的相关声明和事件感兴趣,


就要引用


I E


控件找到对象中的常量


和事件:


(M ICROSOFT INTERNET CONTROL)


你可以看到的是,


通过


ieA


——就是创建的对象——我们可以操 作它,


也可以访问它的属性。


下面继续,


如果前面你是在命令行输入,


打开的那个空白网页没有关闭,


变量是继续有效的:



Set doc = nt






‘取得网页的文档对象



TML =




‘在文档的


BODY


标记内加上标记文字


HELLO

< br>网页上写了一行小字,


HELLO......


通用的惯 例,当然你可以写上其它的什么,


HI


,我爱你,


EXCEL



HOME


之类 ,但这不是最需要的关心的问题,我们要知道这个对象之下的结构。


< br>从文档对象(


Document


)以下展开的对象模型, 它代表网页的内容,和前面那个


IE


的应用

程序不是同一个体系——请注意这一点——如果我们编程时要用到对应的对象事件和常量,

< br>在


VB/VBA


中要引用的类型库是



MIRCOSOFT HTML OBJECT LIBRARY




Documnet


(文档)是文档对象模型的基础,相当于


OFFICE


对象中的


APPLICATION


,取得


Document


之后,


不论修改网页还是读 写网页,还是触发事件,一切都好说,


每个


URL


都对


应有一个


Documnet

(这是假如定成功导航


Navigate


到那个

< p>
URL


完成,因此之前要求确定


IE


对象


READSTATE


,以确定对应


URL



Document


打开了)




Documnet


之下可以取得


documentElement



body


两个节点:



......















‘前面 已经取得了


ieA


对象,并打开空白网页,不再重复

< p>


set


doc=nt


set


xbody=




‘取得


body

对象



set


xDoc=doc.


documentElement



‘取得根节点


body


前面已经说过,相当于



标记的对象,根节点相当于网页中的


< p>
标记元素的对象,


MHTML


的类型库定义里,它 们都属于


HTMLHtmlElement


类型的对象,


下面我把这种类型的对象称为一个“节点”,


不过要注意的是文档对象 不是节点对象,


它是


HTMLDocument


类型。


根节点和


body


节点 不同的是根节点包括整个网页,



HTML

的文档


对象模型中,这类对象有几种属性可以取得其中的内容:


对象


.innerHtml




‘对象内部的


HTML


文本



对象


.OuterHtml




‘对象中的


HTML


文本,包括对象本身的


HTML


标记在内



对象


.innerText





‘对象 内部的


TEXT


,不包括


HTML


标记



对象


.OuterText





‘同上,包括对象本身的文本



所以, 如果我们要抓取某个网站的所有


HTML


内容,代码可以这样写 :



......















‘前面已经取得了


ieA


对象,并打开某< /p>


URL


网页



set


doc=nt


set


xDoc=doc.


documentElement



‘取得根节点



strX=tml





‘取得所有的


HTML


内容



这种取值的方式不妨可以当成


EXCEL


的单元格取值:



set


shDocX=SHEET



‘从应用程序、工作


簿一直定位到当前工作表,这是

< p>
EXCEL


的工作簿对象模型



set


rngX=(



a1



)




‘取得单元格


(

其实不一定是一个格子,


只要是


R


ANGE


类型对象即可


)


X=





‘取得


VALUE


值,也可以取只读的


TEX T


在网页上看到的标记,就是根节点或


body


之下的标记节点对象(


node


< br>。每一个标记节点


对象之下都有一个名为


ChildNo des


的集合,它包含了“直属于本节点下的标记”,听起来

-


-


-


-


-


-


-


-



本文更新与2021-02-28 05:35,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/678954.html

VBA中的IE对象操作的相关文章