vba 操作html,VBA IE对象的操作方法
‘同上,包括对象本身的文本
所以,如果我们要抓取某个网站的所有HTML内容,代码可以这样写:
...... ‘前面已经取得了ieA对象,并打开某URL网页
set doc=ieA.Document
set xDoc=doc. documentElement ‘取得根节点
strX=xDoc.OuterHtml ‘取得所有的HTML内容这种取值的方式不妨可以当成EXCEL的单元格取值:set shDocX=APPLICATION.ACTIVEWORK.ACTIVESHEET ‘从应用程序、工作簿一直定位到当前工作表,这是EXCEL的工作簿对象模型
set rngX=shDocX.Rang(“a1”) ‘取得单元格(其实不一定是一个格子,只要是RANGE类型对象即可)
X=rngX.VALUE ‘取得VALUE值,也可以取只读的TEXT在网页上看到的标记,就是根节点或body之下的标记节点对象(node)。每一个标记节点对象之下都有一个名为ChildNodes的集合,它包含了“直属于本节点下的标记”,听起来有点抽象——这么说吧,就象是文件目录,根目录下的子目录……
HELLO
001
在上面的网页例子里,HTML标记是文档的根节点,是Document的Childnodes集合中的一个成员(还是要提请注意,Document不是节点,是另一种类型对象:上一级文档,但它可以有下级节点集合,正如磁盘可以有下级目录,但它本身不是目录),BODY是根节点的ChildNodes集合中的一个成员,而DIV和P两个节点则是BODY的ChildNodes集合中的两个成员,同样也有自已的Childnoes集合——不过我们很直观地可以看到,它们的下级集合是空的。
用程序代码程序问的过程是怎么样的呢?这种“目录式”层次的方式似乎是很有序的,那么,把上面的内容另存为一个HTML文档,放到硬盘的某个目录下,自已写一段代码做完前面的工作吧,我不代劳了:…….假定你已经用ieA为名的对象浏览了上述网页文件
set doc=ieA.Document
set xbody=doc. body ‘取得body节点
set xI00= xbody.Childnodes.item(0) ‘取得body的第1个节点
set xI01=xbody.Childnodes.item(0) ‘取得bdoy的第2个节点
Msgbox xI00.innerText ‘显示第1个节点(DIV)的文本
Msgbox xI01.outerHtml ‘显示第2个节点(P)的完整内容在VB/VBA/VBS系列的语言中,item是默认方法,可以省略,不过我在这里还是写出来,加深印象。
应该注意的是,文档对象模型中,集合与OFFICE的集合有所不同,首先,集合是从0开始计数的,习惯了OFFICE VBA编程的朋友们一定要注意,不同的对象架构有不同的方式,这里用的是“0集合”,其次,它用的计数属性是Length而不是Count,不要习惯性地打上Childnode.Count查看集合的数量了
除了ChildNodes集合,大家在网页文档对象中还常见到的就是很大气的一种集合:All集合,这是“最糊涂”的一种集合,文档和各级节点都带有这个集合,正如这个名字所示,它是不分层次的,但用起来也很方便:…….
Set doc=ieA.Document
Set xCols=doc.All ;取得文档中的所有节点集合
Set xbCols=doc.body.All ;取得body节点下所有的节点集合虽然任何标记节点都有ALL集合,但我们还是喜欢用DOCUMENT的ALL,原因无它,文档最大,一锅烩的ALL找起来也最合适。
ALL查找是有条件的:如果这个标记没有ID,你无法查到它的名字:
hi,you
excelset tag1=doc.All.item(“myTag”).item(0) ‘返回标记内部ID=myTag的集合并取第一个最初在我个人看来,如果网页中的HTML标记已经有了ID,不如用文档对象的getElementById直接返回一个对象更直接,这个方法不需要经过集合:set tag1=doc. getElementById(“myTag”) ‘返回第一个内部标有ID=myTag的标记不过,ALL集合有一个很方便的特性——至少在初学者看来是很好用的:ID可以挂到ALL集合之下:strX=doc.All.mytag.innerhtml ‘呜呜呜,太好用了另一种方法是以标记名为集合,要用到文档对象的getElementsByName方法:set mydivs=doc. getElementsByName(“div”) ‘取得所有DIV标记,注意还是集合今天先写到这里,下回......不定期休息(补一小段,特别增加,关于FORMS,某位兄弟,下面真的真的没有了,不要期望我上传实例......)关于文档对象的FORMS集合,因为大部分网页的数据提交都是通过FORM标记提交的,因此FORMS集合在没有网页中FORM标记没有ID标记或ID标记重复的情况下,可以用来区分不同的FORM节点:
QUOTE:
SetmyForms=doc.Forms ‘取得所有的FORM标记
Set frmX=myForms.item(0) ‘第1个FORMFORM标记节点代表的对象是很多朋友关心的内容——在网页对象中,它可以发送数据到服务器,使服务器刷新网页(实际上是服务器按某个格式约定发回数据),我们可以把网页的FORM看成是一个远程的函数调用接口,FORM标记中的ACTION指向的URL地址就是函数入口,而FORM标记内的各个INPUT标记节点就是函数的参数,当发出FORM.Submit方法时,就是远程调用函数了,在服务器端,诸如ASP,PHP就是老老实实找FORM的参数,不管你是用GET还是POST:
QUOTE:
frmX.submit ‘是的,只要Submit,相当于用户在页面上按下FORM的发送按键
但它的参数,也就是INPUT标记们怎么办?当然你可以自已修改,访问,唔......如果你分析了已经存在的网页,想从一个空白页面(ABOUT:BLANK)用VBA“凭空”生成FORM和INPUT节点,光凭上面的方法还不够,我们还要“创造节点”(createElement_x)并连入文档对应的位置(appendChild),但这已经是另一个问题了
vba 操作html,VBA IE对象的操作方法相关推荐
- ie 不执行回调函时_「Excel VBA操作IE篇」10分钟内设置完成,3句代码打开IE浏览器
大家好,我是咚腔! Excel VBA还可以 操作IE浏览器,有没有搞错? 没错,可以操作,而且非常好用.因为Excel有强大的数据分析功能. 这有什么关系?关系很大. 现在是数据时代,定期数据获取以 ...
- 使用VBA操作文件(1):使用Excel对话框
转贴自 http://www.excelperfect.com/2009/08/05/handlefileswithvba/ 使用VBA操作文件(1):使用Excel对话框 本专题主要讲述使用VBA ...
- VBA操作Excel之获取单元格区域
VBA操作Excel之获取单元格区域 一.VBA通过索引引用工作表 二.VBA获取单元格区域 三.VBA调用方法参数传值 参考文档 一.VBA通过索引引用工作表 VBA打开工作簿后,通常一个工作簿有若 ...
- vba 文件操作服务器,VBA文件及文件夹操作
VBA文件及文件夹操作 1.VBA操作文件及文件夹 on error resume next下测试 A,在D:\下新建文件夹,命名为folder 方法1:MkDir "D:\folder&q ...
- VBA操作Excel之设置单元格属性
VBA操作Excel简介 一.VBA读写Excel文件 二.VBA设置单元格属性 三.VBA弹出输入和输出窗口 参考文档 一.VBA读写Excel文件 VBA简介及打开Excel文件方法见VBA读写E ...
- (转)Excel VBA 操作 Word(入门篇)
原文地址 本文的对象是:有一定Excel VBA基础,对Word VBA还没有什么认识,想在Excel中通过VBA操作Word还有困难的人. 一.新建Word引用 需要首先创建一个对 Word App ...
- Windows编程语言VBA学习(三)——使用VBA操作Excel
在之前的文章中我们学习了VBA的基本语法,接下来我们就要学习如何使用VBA开发宏命令脚本,如何与Excel进行交互. 我了解的内容仅限于我自己的使用,可能并不系统,还请谅解. 首先我们可能需要操作Sh ...
- VBA操作Excel
VBA基础语法 Function ReadPoint(xlSheet As Worksheet) As Point() ReadPoint = astrPoint Function 函数 End Fu ...
- 枚举如何设置空白_2019-07-04 用VBA设置word中shape对象相对位置
在excelhome上看到一个提问 Excel 请教:用代码插入文本框,不随文字移动.-ExcelVBA程序开发-ExcelHome技术论坛 -club.excelhome.net 本以为可以通过录 ...
最新文章
- 英伟达推出全球首个元宇宙平台,豪砸数亿是为什么?
- python在windows 输入和输出文件_Python文件、目录和输入输出操作
- 也谈设计模式,实例票据打印 解析 Decorator
- Freenas使用小结(一)安装
- paip.ecshop邮件模板修改一个密码找回 一个留言回复
- Linux uptime命令详解
- c语言二级题库pdf,C语言二级考试题库.pdf
- Fluent 安装过程
- SpringBoot 实现业务校验,这种方式才叫优雅!
- 项目沟通管理和项目干系人管理
- 计算机网络知识点之五
- 计算机科学排行榜2018年,2018本科计算机专业社会影响力排行榜!电子科大实至名归...
- 超级微商系统开发,社交电商3.0时代的概念
- FineReport之localhost拒绝了我们的连接请求
- 宝塔 控制面板如何添加新网站
- Android桌面图标布局,android安装运行launcher并修改桌面图标
- 全国高速公路一览表_拔剑-浆糊的传说_新浪博客
- 如何用一片74LS161和必要的门电路构成一个可控计数器?
- [个人笔记]HCIP-Routing Switching-IENP/H12-222
- Ubuntu常用防火墙命令
热门文章
- ifconfig没有ip地址_虚拟机创建后该如何获取IP地址并访问互联网实用教程
- Exchange Server 2016 独立部署/共存部署 (三)—— 安装Exchange程序
- ESXI6.7虚拟机配置LACP静态汇聚端口网络负载均衡分流
- Docker学习总结(51)——为什么不建议把数据库部署在 Docker 容器内的7大原因?
- Maven学习总结(24)——Maven版本管理详解
- 过磅系统_集团公司首个过磅计量及销售结算新系统上线试运行
- 一个完整的html文件包含哪些标签,HTML基础有哪些单标签
- 为什么突然变乱码_9102年了,还不知道Android为什么卡?
- 不做别人思想的“跑马场”(人民论坛)
- 新零售大潮下 联想与BHG Mall签约共建智慧商城