2

我非常喜欢使用 VBA 进行开发(用电锯削减公司的繁文缛节),并且已经熟练地使用各种加载项引用(IE、Excel、Outlook 和 Word 自动化对象,其中 IE 是我最好的)扩展这些宏'诡计')。

无论如何,我很好奇如何在网页上获取给定对象的 OOP“胆量”列表,因为我的 IDE 无法给出任何提示。

这是一些示例代码,确保引用了 shdocvw.dll,并假设“www.mywebsite.com”有一个用户名和密码文本框以及一个登录按钮:

Sub MyIEAutomationExample
    Dim IE as InternetExplorer
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Navigate ("http://www.mywebsite.com")

    Do Until IE.ReadyState = READYSTATE_COMPLETE 'Delay for loading page
    Loop

    IE.Document.all.Item("tbxUserName").Value = "Nxwtypx"
    IE.Document.all.Item("tbxPassword").Value = InputBox("Please enter your password.")
    IE.Document.all.Item("btnLogin").Click
End Sub

我想到的问题是,如果我想确定 tbxUserName、tbxPassword 或 btnLogin 的其他属性/方法/事件怎么办?是否有某种可用于标准对象的参考?

即便如此,据我所知,内部开发的富文本框等更古怪的对象呢?

4

2 回答 2

1

如果您正在查看的是标准 HTML 页面,那么该对象的document属性InternetExplorer应该返回一个HTMLDocument对象。如果您添加对“Microsoft HTML 对象库”的引用,那么您可以看到HTMLDocument.

单个 HTML 元素的详细信息可以在“HTML”+元素名称+“元素”下找到。例如,button元素的详细信息可以在下面找到HTMLButtonElement

我不确定您能从非标准对象中找到什么。Remou 关于添加手表的建议可能是这里最好的主意。然后,您可以使用 Watch 窗口定位与非标准对象对应的节点,并查看它公开了哪些(如果有)属性。

最后,如果您正在查看的文档是 XHTML 或 XML 格式,那么您可能需要使用 XMLHttpRequest(而不是 InternetExplorer),因为这可以让您使用更强大的语言 XPath 来定位您要检查的节点 - 请参阅此答案到另一个问题了解详细信息

于 2010-11-22T23:06:28.747 回答
1

除了我经常使用该TypeName功能之外,我几乎无法立即想到要添加到已经给出的答案中

typename(myVariableOfInterest)

类型名称

返回提供有关变量信息的字符串。


例如,在处理网页时,我可能会写:

Dim a As Object: Set a = .document.getElementById("elementID")

然后在即时窗口中执行

TypeName(a)

这通常会告诉我正在使用的数据类型,例如HTMLTable.

我接受返回的字符串,然后是任何一个,没有特别的顺序:

  1. 谷歌查找列出的方法/属性
  2. MSDN 开发人员搜索以查找列出的方法/属性
  3. 使用 Excel 中的对象浏览器搜索字符串和列出的方法/属性
于 2018-06-18T14:46:29.037 回答