2008-10-06 74 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