在Excel 2010中使用VBA代码调用Web服务

19

我正在尝试在Excel 2010中编写一些VBA代码来调用Web服务,但是我无法在互联网上找到任何相关资源。请问有谁能告诉我如何实现呢?


Jimmy Peña的博客有一系列关于如何做到这一点的优秀文章。http://www.codeforexcelandoutlook.com/blog/category/internet-explorer/ - Lunatik
你可能会发现这个链接很有用。它同样适用于Excel 2010。我还找到了这个链接 - yuben
1
这是一个老问题,但是……我刚刚在Excel 2013中发现了“=WEBSERVICE”函数。简单易行……请参见http://blogs.office.com/2013/03/21/use-webservice-functions-to-automatically-update-excel-2013-spreadsheets-with-online-data/。 - SAL
你可能也对PowerQuery感兴趣:http://blog.crossjoin.co.uk/2014/03/26/working-with-web-services-in-power-query/ - JohnLBevan
使用MSXML2.XMLHTTP60对象似乎在我的情况下有所帮助,请参考链接:https://codingislove.com/http-requests-excel-vba/。 - Saad A
显示剩余2条评论
5个回答

38

我最近遇到了同样的问题,想要用纯VBA与Trello和Salesforce通信,而不安装任何插件、打开Visual Studio或其他方法。最终我写了自己的库(基于我最喜欢的库之一RestSharp)。

警告,这是个厚颜无耻的广告: https://github.com/VBA-tools/VBA-Web

一些有趣的特性包括Mac支持(!),身份验证 (Http基本认证, OAuth1, OAuth2等), 异步支持,并且由于VBA-JSON的帮助,还有JSON解析功能。

它在Excel 2010和2013(很可能也适用于2007)中工作得非常好,我已经成功地与Salesforce,Trello,Basecamp,Google Maps进行了通信,它应该可以与几乎所有网络服务一起使用。


哇,太棒了。这是一个很好的作品,虽然我还没有测试过,但看起来非常棒。非常感谢! - Juliusz
1
太棒了!谢谢分享。 - Yogi

7
我认为被标记为答案的帖子是错误的 - 它链接到基于MS Office Web Services Toolkit的Excel 2003解决方案。由于Toolkit不再受支持,该解决方案已经无效。请参见:MSDN - Consuming Web Services in Excel 2007。该链接提供了适用于Excel 2007的解决方案,可以转换为Excel 2010。但是,您需要使用Microsoft Office开发人员工具的Visual Studio 2010。这也意味着利用.Net Framework并使用C#或VB.NET进行编码。

6
-1,这个问题要求使用VBA。这个回复需要使用Visual Studio。 - iDevlop
4
好的。依我之见,微软希望终结VBA,并推行基于.NET的Office解决方案。另外,你不必使用Visual Studio,可以使用记事本和命令行编译器。 - Juliusz
4
如果VBA明天消失,甚至包括很大的银行,也会停止工作,这个事实可能会让人惊讶! - iDevlop
有趣的是,我正在为其中一家公司工作,他们会非常高兴地从Excel二进制文件中删除任何代码。他们中的一些人甚至已经这样做了;他们在代码存储库中存储VBA模块,并且每次发布时都会从中重建工作簿。 - Juliusz
我的观点是,微软积极地反对VBA编程,并试图将开发转移到.NET和Visual Studio。 MS Office Web Services Toolkit的删除就是一个例子。因此,VBA不会在明天消失,但它的日子已经不多了。无论你喜欢与否。 - Juliusz
显示剩余2条评论

3

据发布时的情况,我发现Excel 2003的旧Web References Toolkit仍然能够在Excel 2007/10中生成可用的VBA代码(请注意,在过去18个月中,由于各种Windows更新出现了一些不稳定的时刻,导致该代码无法工作,因此我不认为我的解决方案是“可靠的”)。

我的可怕的黑客方法包括安装Excel 2003,然后安装Web References Toolkit,然后再安装Excel 2007或Excel 2010。我使用这种黑客方式设置了3台PC,并且所有PC都可以生成可用的VBA代码来消耗asmx web服务(我还没有尝试连接其他类型的web服务,但我不认为它们不能工作)。

使用VSTO的官方MS方法对于我们的某些客户来说有点困难,而这种VBA黑客方法使他们感到满意。


1

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接