2008-10-06 42 views
1

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

谢谢!

+0

任何可能丢失您正在使用的代码的机会? – Kev 2008-10-06 02:31:14

回答

1

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

2

我不确定我是否得到整个图片,但希望有一些会有所帮助。我认为你有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