Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将特定表格从web提取到Excel VBA(Mac)中的电子表格_Excel_Vba_Macos - Fatal编程技术网

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

无法将特定表格从web提取到Excel VBA(Mac)中的电子表格,excel,vba,macos,Excel,Vba,Macos,基本上,我有下面的程序,它允许我获取特定股票的股价,在下面的例子中是“700”。股价出现在网页上的特定表格中。在个人电脑中,我能够使用 .WebSelectionType=xlSpecifiedTables .WebTables=“4” 从网页中选择我想要的特定表格。但是在mac上,我无法做到这一点,我遇到了运行时错误438:object不支持此属性或方法。这真让人讨厌。所以我从代码中删除了这两行。但问题是:我现在无法从网上提取特定的股票价格表。有人能告诉我如何克服这个问题吗 Sub getSt

基本上,我有下面的程序,它允许我获取特定股票的股价,在下面的例子中是“700”。股价出现在网页上的特定表格中。在个人电脑中,我能够使用

.WebSelectionType=xlSpecifiedTables

.WebTables=“4”

从网页中选择我想要的特定表格。但是在mac上,我无法做到这一点,我遇到了运行时错误438:object不支持此属性或方法。这真让人讨厌。所以我从代码中删除了这两行。但问题是:我现在无法从网上提取特定的股票价格表。有人能告诉我如何克服这个问题吗

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

Office 2011 for Mac

综上所述,.WebTables属性似乎是一个实现,或者是

可能的解决方法

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


一般指南

创建web查询

对于Mac,您需要创建一个web查询文件来检索web内容。Microsoft已经制作了一个操作指南,可以帮助您:

引用要导入的特定表

可以使用选择参数指定要选择的表。下面是一个使用Excel 2013 Windows构建的webquery示例

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
使用.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
使用具有更改值的.iqy文件

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

您可以进一步修改循环语句以插入值,也可以直接在VBA中更新它,但我想提供一种更简单的方法来更改表,使其更直观。

谢谢你的回答。嗯,我已经这么做了。但是如何从网页中获取特定的表呢?你的链接中提到的web查询只讨论如何创建web查询文件,但没有告诉我如何从网页中提取特定的表。我尝试了以下代码,除了URL之外,这些代码与你的代码非常相似<代码>WEB 1https://www.google.com.hk/finance/historical?q=HKG%3A0005&num=200 Selection=4 Formatting=None PreFormattedTextToColumns=True ConcertiveDelimitersASONE=True SingleBlockTextImport=False DisableDateRecognition=False DisableRedirections=False但是,无论我设置了什么值“Selection=”,它仍然在电子表格的顶部给了我一些不必要的数据。你明白为什么会发生这种情况吗?我已经在dropbox中添加了一些包含参数化的样本-你能看看它们是如何为你工作的吗?我没有Mac或工作簿的副本来为您检查细节,因此我构建了一个MW。问题是Mac Excel VBA 2011不支持查询表和
webtables=“4”
将导致mac VBA出错。查看一些msdn论坛帖子,似乎是因为vba5不支持该属性,mac office使用的是vba5而不是vba6。不幸的是,我无法访问任何文档,因为它们是mac2链接。