关于Web服务:如何从Excel 2003 VBA调用WCF客户端?

How do I call WCF client from Excel 2003 VBA?

如问题所问,如何从Excel2003 VBA调用WCF客户端?

我看到有一个可以调用Web服务的地方,但是我已经通过谷歌搜索过了,我得到的所有结果都不可能从VBA调用WCF客户机。

我想知道在我对代码做任何事情之前要使用什么方法,不想浪费时间,稍后发现不可能这样做。


您可能希望使用wcf服务标记,该标记允许您从vba调用wcf服务,而不在.NET框架之外的Excel客户端计算机上安装任何内容。

1
2
3
4
5
6
7
8
9
10
Dim addr As String
addr ="service:mexAddress=""net.tcp://localhost:7891/Test/WcfService1/Service1/Mex"","
addr = addr +"address=""net.tcp://localhost:7891/Test/WcfService1/Service1/"","
addr = addr +"contract=""IService1"", contractNamespace=""http://tempuri.org/"","
addr = addr +"binding=""NetTcpBinding_IService1"",bindingNamespace=""http://tempuri.org/"""

Dim service1 As Object
Set service1 = GetObject(addr)

MsgBox service1.GetData(12)

我已经写出了一个完整的分步示例。

达米安


在这种情况下,我不会使用vsto。只要您不希望SOAP消息中有任何安全性,COM互操作可能是最好的方法。

  • 使用必要的绑定编写WCF客户端
  • 为COM互操作公开程序集
  • 在Excel VBA中引用公开的程序集

  • 我试了很长一段时间从Excel VBA调用基于SOAP的WCF服务,但没有任何运气。
    BR/>相反,我将服务改为REST绑定(webhttpbinding)。这样我就可以像其他XML文件一样将数据Stright加载到XML映射中。对我来说效果很好,但我只是想导入一些数据。
    BR/>至于SOAP,这个问题的答案提到了Web服务工具包,我可以找到建议使用的所有示例。


    我在使用Office2003 Web服务工具包的过程中取得了有限的成功,但也有一些困难。

    请注意,这是微软不支持的,并且有许多限制,可能使其不适合生产使用。例如,它不支持返回空集合的Web服务:请参阅此StackOverflow问题。

    如果你想走这条路,尽管它是不受支持的,下载工具包和张贴任何问题,你在这里。

    Microsoft建议使用vsto,但这不容易与vba集成…