DRC*_*DRC 6 html ms-access vba dom
我已成功使用 MS Access 对象打开浏览器窗口并从该打开的窗口读取数据。但是,我现在尝试从 Access 窗体内的 MS Access 浏览器控件对象内部打开的网页读取数据,而不是在外部浏览器窗口中读取数据。
根据我使用对象时有效的代码,我尝试以下方法从 Access 中浏览器控件内显示的内容中读取数据:
forms!frmOQWebWindow.webView.Document.getElementByID("lblSessionDate").innerText
Run Code Online (Sandbox Code Playgroud)
并且
forms!frmOQWebWindow.webView.Object.Document.getElementByID("lblSessionDate").innerText
Run Code Online (Sandbox Code Playgroud)
但这两个都给我运行时错误'91':“未设置对象变量或With块变量”
当网页显示在 MS Access 表单内的 Web 浏览器控件内时,如何读取具有指定名称(“lblSessionDate”)的元素的值?我确信我错过了一些简单的事情。
如果有帮助的话,下面是当我使用对象从同一网页上的元素读取数据时有效的代码,当我尝试从浏览器控件读取数据时会抛出错误:
Dim weblink As String
Dim objIE As Object
Dim SessionDate As String
Set objIE = CreateObject("InternetExplorer.Application")
weblink = "http://www.somewebpage.com"
objIE.Navigate weblink
While objIE.Busy
DoEvents
Wend
objIE.Visible = True 'make it visible; set this to false to hide the window
SessionDate = objIE.Document.getElementByID("lblSessionDate").innerText
Run Code Online (Sandbox Code Playgroud)
快速摘要:使用 ActiveX Web 浏览器控件而不是MS Access Web 浏览器控件。
今天早上,我解决了这个问题。我一直很困惑为什么对象浏览器没有显示我添加到 Access 表单的 Web 浏览器控件的 .document 属性。我突然意识到,我在另一篇文章中读到,该人竭尽全力提到他们没有从功能区栏上的控件工具箱添加 Web 浏览器控件,而是添加了 ActiveX Web 浏览器控制。
一旦我删除了 Access Web 浏览器控件并添加了 ActiveX Web 浏览器控件,一切就开始按预期运行! ActiveX 浏览器控件有一个 .document 属性,我能够从 Access 表单中的浏览器控件读取信息。这是我为使其正常工作所做的事情:
在 Form_Open 事件中,添加导航到所需网页所需的代码,例如使用名为 webView 的 ActiveX Web 浏览器对象:
Me.webView.Object.Navigate "http://www.yoururl.com"
Run Code Online (Sandbox Code Playgroud)为了从网页读取数据,我将表单的 TimerInterval 设置为 100(100 毫秒),并在那里放置代码以将所需的数据收集到变量中以供以后使用;一旦 Timer 事件触发,我将 TimerInterval 设置为 0,这样它就不会再次触发。例如,在 Form_Timer 事件和名为 webView 的 ActiveX Web 浏览器中:
With Me.webView.Object
While .Busy Or .ReadyState <> 4 'thanks to @ErikvonAsmuth for .ReadyState <> 4
DoEvents
Wend
SDate = .Document.getElementByID("SDate").innerText
Omega = .Document.getElementByID("Omega").innerText
End With
Me.TimerInterval = 0 'turn off timer since we've got the data needed
Run Code Online (Sandbox Code Playgroud)经过上述操作,我可以在 VBA 代码中检查 SDate 和 Omega 的值。当然,您需要知道Elements的ID值,但是其他论坛可以教您如何找到这些ID值。
希望这对其他人有帮助!