无法在Excel VBA(Mac)中将特定表从Web提取到电子表格

myn*_*EFF 3 excel vba excel-vba excel-vba-mac

基本上,我有以下程序,它允许我获得特定股票的股票价格,在下面的例子中说"700".股票价格出现在网页的特定表格中.在PC电脑上,我能够使用

.WebSelectionType = xlSpecifiedTables

.WebTables = "4"

从网页中挑选出我想要的特定表格.然而在Mac上,我无法做到这一点,我遇到了这个问题run-time error 438 : object doesn't support this property or method.这真的很烦人.所以我从代码中删除了这两行.但问题是:我现在无法从网络中提取特定股票价格表.任何人都可以告诉我如何克服这个问题吗?

Sub getStockDataTest()
    getGoogleStockHistory 700

End Sub


Sub getGoogleStockHistory(gInt As Long)
      'load google stock hisotry

    With ActiveSheet.QueryTables.Add(Connection:="URL;https://www.google.com.hk/finance/historical?q=HKG%3A" & Format(gInt, "0000") & "&num=200", Destination:=ThisWorkbook.Sheets("Query").[A1])
        .Name = "WebQuery"
        .RefreshStyle = xlOverwriteCells
        .SaveData = True
        .Refresh
    End With
End Sub
Run Code Online (Sandbox Code Playgroud)

Ste*_*cke 7

Office 2011 for Mac

看来,似乎.WebTables属性要么是VBA 6实现,要么只适用于IE

可能的解决方法

将所有内容导入隐藏的工作表,然后复制并粘贴到相关部分,因为布局应该对于不同的库存类型相当一致


一般指导

创建Web查询

对于Mac,您需要创建Web查询文件以检索Web内容.Microsoft已经制作了一个可以帮助您的操作方法:http://support.microsoft.com/kb/274787

引用要导入的特定表

您可以使用Selection参数指定要选择的表.以下是使用Excel 2013 Windows构建的Web查询示例.

WEB
1
https://www.google.com.hk/finance/historical?q=HKG%3A0005&num=200#
num=200&q=["stock","stock sym"]

Selection=4
Formatting=None
PreFormattedTextToColumns=True
ConsecutiveDelimitersAsOne=True
SingleBlockTextImport=False
DisableDateRecognition=False
DisableRedirections=False
Run Code Online (Sandbox Code Playgroud)

使用.iqy文件

使用.iqy文件,您可以使用"FINDER; C:\ folderstructure\queryname.iqy"而不是使用URL加载它:

Sub example()
    Workbooks("Book6").Connections.AddFromFile _
        "C:\Users\slocke\Desktop\hkquery.iqy"
    With ActiveSheet.QueryTables.Add(Connection:= _
        "FINDER;C:\Users\slocke\Desktop\hkquery.iqy", Destination:=Range("$A$1"))
        .CommandType = 0
        .Name = "hkquery"
        .WebTables = "4"
    End With
End Sub
Run Code Online (Sandbox Code Playgroud)

使用带有更改值的.iqy文件

我添加了一个iqy和工作簿,其中包含一些基本的vba,用于根据要更改的参数的文本框位置导入和更新表.

您可以进一步修改循环语句以插入值,或者您可以直接在VBA中更新它,但我想提供一种更简单的方法来更改表格以使其更直观. https://dl.dropboxusercontent.com/u/40423572/SO%20items/hkexample.xlsm https://dl.dropboxusercontent.com/u/40423572/SO%20items/hkquery.iqy