基本上,我有下面的程序,它允许我获得特定股票的股价,比如下面的例子中的"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
Office 2011 for Mac
环顾四周,似乎.WebTables属性要么是VBA 6实现,要么是只在IE 上工作的东西
可能的解决方法
导入隐藏表单上的所有内容,然后复制并粘贴到相关部分,因为不同库存类型的布局应该相当一致
通用指南
创建web查询
对于Mac,您需要创建一个web查询文件来检索web内容。Microsoft制作了一个操作指南,该指南将对您有所帮助:http://support.microsoft.com/kb/274787
引用要导入的特定表
可以使用"选择"参数指定要选择的表。以下是使用Excel2013Windows构建的网络查询示例。
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:UsersslockeDesktophkquery.iqy"
With ActiveSheet.QueryTables.Add(Connection:= _
"FINDER;C:UsersslockeDesktophkquery.iqy", Destination:=Range("$A$1"))
.CommandType = 0
.Name = "hkquery"
.WebTables = "4"
End With
End Sub
使用具有更改值的.iqy文件
我添加了一个iqy和工作簿,其中包含一些基本的vba,用于根据您正在更改的参数的文本框位置导入和更新表。
您可以进一步修改循环语句以插入值,也可以直接在VBA中更新它,但我想提供一种更简单的方法来更改表,使其更直观。https://dl.dropboxusercontent.com/u/40423572/SO%20items/hkexample.xlsmhttps://dl.dropboxusercontent.com/u/40423572/SO%20items/hkquery.iqy