Excel2003モジュールからWebサービスを呼び出そうとしています。私が実装した方法は、公開する必要のあるすべてのクラス/メソッドを含む.NETCOMライブラリを作成することです。ExcelからWebサービスを照会するメソッドを呼び出そうとすると、エラーなしでその行で実行が停止します。それは参照と関係があるのでしょうか?Microsoft.Web.Services2.dllを使用しています。私はそれをC:\ WINDOWS\SYSTEM32に入れてみました-運がありません
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
この問題を解決するために、Excel ではなく Access を使用しました。アクセスでエラーが表示されました。すべての参照アセンブリの場所は、呼び出し元アプリケーションの場所であることが判明しました (この場合は C:\Program Files\Microsoft Office\OFFICE11)。Sencondly 私の Web サービス プロキシは、そのコンテキストでは C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE.config であった .config ファイルからエンドポイント URL をロードしていました。