我已成功使用MS Access对象打开浏览器窗口并从该打开的窗口中读取数据。但是,我现在正在尝试从Access中的窗体内的MS Access浏览器控件对象内部打开的网页中读取数据,而不是在外部浏览器窗口中读取数据。
基于我在使用对象时工作的代码,我尝试以下方法从Access中浏览器控件内显示的内容中读取数据:
forms!frmOQWebWindow.webView.Document.getElementByID("lblSessionDate").innerText
并且
forms!frmOQWebWindow.webView.Object.Document.getElementByID("lblSessionDate").innerText
但是这两个都给我运行时错误'91':“对象变量或没有设置块变量”
当网页显示在MS Access表单内的Web浏览器控件中时,如何读取具有指定名称(“lblSessionDate”)的Element的值?我确定我错过了一些简单的事情。
如果它有帮助,这里的代码在我使用对象从同一网页上的Elements读取数据时起作用,当我尝试从浏览器控件中读取它时会抛出错误:
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
快速摘要:使用ActiveX Web浏览器控件而不是MS Access Web浏览器控件。
今天早上,我解决了这个问题。我一直很困惑,为什么对象浏览器没有显示我添加到Access窗体的Web浏览器控件的.document属性。我突然意识到,我曾在另一篇文章中读到过这个人已经不遗余力地提到他们没有从功能区栏上的控制工具箱中添加Web浏览器控件,而是添加了一个ActiveX Web浏览器控制。
一旦我删除了Access Web浏览器控件并添加了ActiveX Web浏览器控件,事情就开始按预期运行了! ActiveX浏览器控件具有.document属性,我能够从Access窗体中的浏览器控件中读取信息。以下是我为实现这一目标所做的工作:
Me.webView.Object.Navigate "http://www.yoururl.com"
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
在上面之后,我能够在VBA代码中检查SDate和Omega的值。当然,您需要知道Elements的ID值,但其他论坛可以教您如何找到这些ID值。
希望这有助于其他人!