我很擅长使用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的其他属性/方法/事件,该怎么办?是否有某种参考可用于标准物体?
即便如此,就像我所知道的那样,内部开发的像Rich Text Boxes这样的变形物体呢?
答案 0 :(得分:1)
如果它是您正在查看的标准HTML页面,则document
对象的InternetExplorer
属性应返回HTMLDocument
对象。如果添加对“Microsoft HTML Object Library”的引用,则可以看到HTMLDocument
的对象模型。
可以在“HTML”+元素名称+“元素”下找到各个HTML元素的详细信息。例如,button
HTMLButtonElement
元素的详细信息
我不确定你能找到什么非标准物品。 Remou建议添加手表可能是最好的选择。然后,您可以使用“监视”窗口找到与非标准对象相对应的节点,并查看它公开的属性(如果有)。
最后,如果您正在查看的文档是XHTML或XML格式,那么您可能希望使用XMLHttpRequest(而不是InternetExplorer),因为这可以让您使用更强大的名为XPath的语言来定位您要检查的节点 - 有关详细信息,请参阅this answer to a different question
答案 1 :(得分:1)
除了我经常使用TypeName
函数之外,我几乎没有想到立即添加到已经给出的答案中。
typename(myVariableOfInterest)
返回一个String,它提供有关变量的信息。
例如,在处理网页时,我可能会写:
Dim a As Object: Set a = .document.getElementById("elementID")
然后在即时窗口中执行
TypeName(a)
通常告诉我我正在使用的数据类型,例如HTMLTable
。
我接受返回的字符串,然后按顺序排列: