从Excel调用.NET COM Web服务包装器

我正在尝试从Excel 2003模块调用Web服务。 我已经实现它的方式是创build一个.NET COM库,其中包含我需要公开的所有类/方法。 当我尝试调用从Excel中查询Web服务的方法时,执行只是在该行上停止,没有任何错误。 可能是与引用有关吗? 我正在使用Microsoft.Web.Services2.dll。 我试图把它放在C:\ WINDOWS \ SYSTEM32 – 没有运气

谢谢!

我不确定我是否能够看到整个图片,但希望其中的一些会有所帮助。 我认为你有Excel VBA通​​过COM接口调用.NET,然后到SOAP Web服务。

您应该安装正确的PIA ,并由您的.NET程序集引用。 你的COM接口应该是这样的:

[Guid("123Fooetc...")] [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] public interface IBar { [DispId(1)] void SomeMethod(Excel.Range someRange); } 

用类来实现这个接口:

 [Guid("345Fooetc..")] [ClassInterface(ClassInterfaceType.None)] [ProgId("MyNameSpace.MyClass")] public class MyClass : IBar { public void SomeMethod(Excel.Range someRange) {...} } 

我要做的第一件事就是在你的.NET代码中用一个真正简单的方法replace你的web服务调用,以确保你的接口和interop包装工作正常。

一旦你的骨架正常工作,你可能要考虑使用HTTP方法而不是使用SOAP来调用你的服务。 例如,下面是使用HTTP GET的简单调用:

 string resource = yourUrl; using (WebClient web = new WebClient()) { web.Credentials = CredentialCache.DefaultCredentials; someXml = web.DownloadString(resource); } return someXml; // or do something interesting with Excel range 

要解决我使用Access而不是Excel的问题。 在Access中显示错误。 原来,所有引用程序集的位置都应该是调用者应用程序的位置(在这种情况下,它是C:\ Program Files \ Microsoft Office \ OFFICE11)。 其次,我的Web服务代理正在从.config文件加载端点URL,在该上下文中是C:\ Program Files \ Microsoft Office \ OFFICE11 \ MSACCESS.EXE.config