VBA IE对象的操作方法
VBA IE对象的操作方法
原文日期:2013-10-27 11:39:29
转载
标签
分类: 电子商务
IE和文档对象模型
在实际工作中,常常需要处理网站和网页相关的问题,比如如何下载网页数据、网页间的通信、网页控制等。对于使用 VB/VBA/脚本或其他支持自动化对象(AUTOMATION)的语言编程的开发者,掌握对象模型非常重要。通过 IE 的自动化对象(InternetExplorer.Application)或 IE 控件(Microsoft Internet Controls),以及标准的文档对象模型(Document),可以将网页视为对象进行控制。
以下代码可在 VBA 环境下试验:
1 | Set ieA = CreateObject("InternetExplorer.Application") ' 创建对象 |
这段代码会创建一个 IE 应用程序对象,并打开一个空白网页。该网页独立于 VBA 应用程序(如 Word 或 Excel)之外。关闭网页需调用 ieA.Quit,仅关闭 VBA 或 Set ieA = Nothing 并不会退出网页。
你也可以将 navigate 的参数替换为网站地址或本地文档路径。例如:
1 | ieA.navigate "C:\XXX.HTM" |
另一种方法是在 VB/VBA 的窗体或工作表上添加 Web Browser 控件。注意,Web 控件和独立 IE 程序并不完全相同,例如 Web 控件不能用 Quit 方法退出,IE 的 navigate 方法没有复杂的 POST 参数,但文档对象的引用方法基本一致。
如果访问已存在的网页(如 www.excelhome.net),由于可能存在异步延时,通常需要根据 ReadyState 状态判断网页是否加载完成:
1 | Sub LOADIE() |
若需访问 IE 应用程序对象的相关声明和事件,可引用 IE 控件(SHDOCVW.DLL,Microsoft Internet Control)。
文档对象模型的基本操作
通过 ieA 对象,可以操作 IE,也可以访问其属性。例如:
1 | Set doc = ieA.Document ' 获取网页文档对象 |
Document 是文档对象模型的基础。获取 Document 后,可以修改网页、读写内容或触发事件。每个 URL 对应一个 Document,需确保 ReadyState 为 4 后再操作。
在 Document 下可获取 documentElement 和 body 两个节点:
1 | Set doc = ieA.Document |
常用属性:
对象.innerHTML:对象内部的 HTML 文本对象.outerHTML:对象的 HTML,包括自身标签对象.innerText:对象内部的纯文本对象.outerText:对象的文本,包括自身
抓取网页所有 HTML 内容:
1 | Set doc = ieA.Document |
类似 Excel 的对象模型:
1 | Set shDocX = Application.ActiveWorkbook.ActiveSheet |
节点与集合
网页中的每个标签节点下都有 ChildNodes 集合,包含直属子节点。例如:
1 | Set doc = ieA.Document |
注意:
- 集合从 0 开始计数
- 使用
Length属性获取数量,而不是Count
除了 ChildNodes,还有 All 集合,包含文档或节点下的所有元素:
1 | Set doc = ieA.Document |
通过 ID 获取节点:
1 | Set tag1 = doc.All.item("myTag").item(0) |
通过标签名获取集合:
1 | Set mydivs = doc.getElementsByName("div") |
FORMS 集合
大部分网页数据提交通过 FORM 标签。FORMS 集合可用于区分不同的 FORM 节点:
1 | Set myForms = doc.Forms ' 获取所有 FORM |
FORM 节点可通过 submit 方法提交数据:
1 | frmX.submit |
如需动态创建 FORM 和 INPUT 节点,可使用 createElement 和 appendChild 方法,这部分内容可后续补充。
本文到此结束,后续内容敬请期待。
- 标题: VBA IE对象的操作方法
- 作者: jicky huang
- 创建于 : 2019-04-15 21:24:38
- 更新于 : 2025-11-05 06:34:28
- 链接: https://www.hxfund.cn/2019/04/15/vba-ie对象的操作方法/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。