Appel d'un wrapper de service Web .NET COM à partir d'Excel

J'essaie d'appeler un service Web depuis le module Excel 2003. La façon dont je l'ai implémenté est de créer une bibliothèque .NET COM avec toutes les classs / methods dont je dois être exposé. Lorsque j'essaie d'appeler une méthode qui interroge un service Web à partir d'Excel, l'exécution s'arrête simplement sur cette ligne sans aucune erreur. Peut-être qu'il s'agisse de references? J'utilise Microsoft.Web.Services2.dll. J'ai essayé de le mettre dans C: \ WINDOWS \ SYSTEM32 – pas de chance

Merci!

Je ne suis pas sûr d'avoir l'image entière, mais j'espère que cela aidera. Je pense que vous venez d'appeler Excel via .NET via une interface COM, puis dans un svc Web SOAP.

Vous devriez avoir la PIA correcte installée et référencée par votre assemblage .NET. Votre interface COM devrait ressembler à ceci:

[Guid("123Fooetc...")] [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] public interface IBar { [DispId(1)] void SomeMethod(Excel.Range someRange); } 

Implémentez l'interface avec une class comme ceci:

 [Guid("345Fooetc..")] [ClassInterface(ClassInterfaceType.None)] [ProgId("MyNameSpace.MyClass")] public class MyClass : IBar { public void SomeMethod(Excel.Range someRange) {...} } 

La première chose que je ferais, c'est de replace votre appel de service Web par une méthode simple et réelle dans votre code .NET, pour vous assurer que votre interface et votre interop wrapper fonctionnent correctement.

Une fois que votre squelette fonctionne correctement, vous voudrez peut-être envisager d'appeler votre service avec une méthode HTTP au lieu d'utiliser SOAP. Par exemple, voici un simple appel utilisant HTTP GET:

 ssortingng resource = yourUrl; using (WebClient web = new WebClient()) { web.Credentials = CredentialCache.DefaultCredentials; someXml = web.DownloadSsortingng(resource); } return someXml; // or do something interesting with Excel range 

Pour résoudre le problème, j'ai utilisé Access au lieu d'Excel. Dans Access, il me montrait des erreurs. Il s'est avéré que l'location de tous les assemblages de reference devrait être l'location de l'application appelante (dans ce cas, il s'agissait de C: \ Program Files \ Microsoft Office \ OFFICE11). Sencondly mes proxies de services Web étaient en train de charger les URL de sharepoint terminaison du file .config qui, dans ce context, était C: \ Program Files \ Microsoft Office \ OFFICE11 \ MSACCESS.EXE.config