我想从Excel 2003模块调用Web服务。 我实现它的方式是创建一个.NET COM库,并提供所有需要公开的类/方法。 当我尝试调用查询从Excel Web服务的执行只是该行停止没有任何错误的方法。 可能是与引用有关吗?我正在使用Microsoft.Web.Services2.dll。我试图把它放在C:\ WINDOWS \ SYSTEM32 - 没有运气从Excel调用.NET COM Web服务包装器
谢谢!
我想从Excel 2003模块调用Web服务。 我实现它的方式是创建一个.NET COM库,并提供所有需要公开的类/方法。 当我尝试调用查询从Excel Web服务的执行只是该行停止没有任何错误的方法。 可能是与引用有关吗?我正在使用Microsoft.Web.Services2.dll。我试图把它放在C:\ WINDOWS \ SYSTEM32 - 没有运气从Excel调用.NET COM Web服务包装器
谢谢!
要解决我使用Access而不是Excel的问题。在Access中它显示我错误。原来全部的基准集的位置,应该是来电显示应用程序的位置(在这种情况下,它是C:\ Program Files文件\的Microsoft Office \ OFFICE11)。其次,我的Web服务代理正在从.config文件加载端点URL,该文件在该上下文中是C:\ Program Files \ Microsoft Office \ OFFICE11 \ MSACCESS.EXE.config
我不确定我是否得到整个图片,但希望有一些会有所帮助。我认为你有Excel VBA通过COM接口调用.NET,然后进入SOAP Web svc。
你应该有正确的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)
{...}
}
我会做的第一件事情是一个真正的简单替换您的Web服务调用方法.NET代码,以确保您的界面和互操作包装正在正确的。
一旦你的骨架是工作的权利,你可能要考虑使用的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
任何可能丢失您正在使用的代码的机会? – Kev 2008-10-06 02:31:14