在excel-VBA中获取Internet Explorer窗口属性(pageYOffset)

我试图从Internet Explorer窗口返回pageYOffset值。 在VBA编辑器的“本地”窗口中,我可以清楚地看到值,但是当我尝试使用VBA检索它时,运行时错误为'438':对象不支持此属性或方法。

这里是我的代码的简化版本:

Sub getProperty() Dim IEWindow As New InternetExplorer Dim scrollValue as Long Set IEWindow = New InternetExplorer IEWindow.Visible = True IEWindow.navigate "www.somewebsite.com", TargetFrameName:="_parent" Sleep 1000 'Scrolls to very bottom of page (approximate) IEWindow.document.parentWindow.Scroll 0, 5000 'Retrieves the exact scroll value scrollValue = IEWindow.document.parentWindow.pageYOffset End Sub 

我search了网上寻找答案,但没有任何相关的VBA似乎显示,这让我觉得我看错了地方。

我不得不说,我发现InternetExplorer对象中的对象和属性确实很难pipe理。 也许它是过度的,但我发现使用早期绑定进行开发并显式定义每个对象会更容易 – 这是我能find的公开属性的唯一方法。

如果我不这样做,那么我会遇到你所遇到的问题。 我不知道为什么本地窗口会显示方法和属性,但是当我尝试访问它们时,代码会抛出一个错误。 也许比我更懂事的人可以解释一下。

同时,如果你明确地定义了每个对象,也许你的代码就可以工作,如下所示:

 'References: ' - Microsoft Internet Controls ' - Microsoft HTLM Object Library Dim IEWindow As New InternetExplorer Dim doc As HTMLDocument Dim wnd As HTMLWindow2 Dim scrollValue As Long Set IEWindow = New InternetExplorer IEWindow.Visible = True IEWindow.navigate URL:="www.somewebsite.com", TargetFrameName:="_parent" Do Until IE.ReadyState = READYSTATE_COMPLETE DoEvents Loop Set doc = IE.Document Set wnd = doc.parentWindow scrollValue = wnd.pageYOffset