【发布时间】:2012-11-14 18:56:39
【问题描述】:
我正在编写一个用于 Eve Online 游戏的 Excel 电子表格。我的电子表格需要通过名为 eve-marketdata.com 的数据提供商网站自动检索数据。在 eve-marketdata 的开发者页面上:http://eve-marketdata.com/developers/item_history2.php 它提供了一些关于如何通过 http 发送“post”请求来请求数据的说明。
例如:用于市场历史请求的 url 将是:http://api.eve-marketdata.com/api/item_history2.xml?char_name=venoushkapatel 然后,假设我想从区域 10000002 检索项目 id 34 的 45 天数据。我会放在末尾url:item_id=34,days=45 和 region_ids=10000002 分别用 & 符号隔开,成品如下:api.eve-marketdata.com/api/item_history2.xml?char_name=venoushka patel&type_ids=34®ion_ids=10000002&days=45 (由于本网站的发布规定,删除了 http://)
因此,我需要某些单元格来使用电子表格中的信息(例如项目 ID、区域 ID 等)来解析适当的 url,将 url 提交到站点,然后只获取我正在寻找的信息并将其放入一个单元格中。目前这在 google docs 而不是 excel 上要容易得多,因为它们的“importxml”功能利用了 xpath。但是,谷歌文档将每个电子表格的 xml 调用次数限制为 50,而我的电子表格将有几千个,所以我必须使用 excel。
不,我不会在 Excel 中使用“从 Web 导入”或“将 xml 映射”到单元格功能,因为我在电子表格中有数千个这样的工作要做,不节省时间或资源。
有人告诉我,这可以使用以下 vba 代码来完成:
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP")
URL = "http://www.somedomain.com"
objHTTP.Open "POST", URL, False
objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
objHTTP.send ("")
问题是,虽然我非常擅长编写 excel 电子表格,但我以前从未使用过 VBA。我知道如何打开 Visual Basic 编辑器,但仅此而已。首先:
如何将其粘贴到 vba 编辑器中,然后在我的工作簿中调用它?我相信我必须将函数()之类的东西放在开头和结尾函数的末尾,对吗?
如何在我的工作表中调用此函数来执行我需要它执行的操作?
有人能解释一下上面的代码是做什么的,以及我需要如何修改它来执行我的任务吗?
在此之前,我真的很感谢在这方面收到的任何帮助,并且社区中有很大一部分人(数以千计的人)也需要一种方法来做到这一点!
【问题讨论】:
-
你确定你肯定需要使用 POST 请求吗?您似乎在描述一个 GET 请求。见w3schools.com/tags/ref_httpmethods.asp
标签: xml excel vba import createobject