Я не уверен, что получу полную картину, но, надеюсь, что-то из этого поможет. Я думаю, у вас есть Excel vba, звонящий в .NET через интерфейс COM, а затем в SOAP веб-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)
{...}
}
Первое, что я хотел бы сделать, это заменить ваш вызов веб-службы на действительно простой метод в вашем .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