1

Excel2003モジュールからWebサービスを呼び出そうとしています。私が実装した方法は、公開する必要のあるすべてのクラス/メソッドを含む.NETCOMライブラリを作成することです。ExcelからWebサービスを照会するメソッドを呼び出そうとすると、エラーなしでその行で実行が停止します。それは参照と関係があるのでしょうか?Microsoft.Web.Services2.dllを使用しています。私はそれをC:\ WINDOWS\SYSTEM32に入れてみました-運がありません

4

2 に答える 2

2

全体像が掴めるかはわかりませんが、参考になれば幸いです。COMインターフェイスを介して.NETに呼び出し、次にSOAP WebサービスにExcel vbaを呼び出していると思います。

正しい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 コードの実際の単純なメソッドに置き換えて、インターフェイスと相互運用ラッパーが正しく機能することを確認することです。

スケルトンが正しく機能したら、SOAP を使用する代わりに HTTP メソッドを使用してサービスを呼び出すことを検討してください。たとえば、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
于 2008-10-06T18:13:17.760 に答える
1

この問題を解決するために、Excel ではなく Access を使用しました。アクセスでエラーが表示されました。すべての参照アセンブリの場所は、呼び出し元アプリケーションの場所であることが判明しました (この場合は C:\Program Files\Microsoft Office\OFFICE11)。Sencondly 私の Web サービス プロキシは、そのコンテキストでは C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE.config であった .config ファイルからエンドポイント URL をロードしていました。

于 2008-10-06T05:43:57.913 に答える