Ringe NET COM webtjeneste wrapper fra Excel

stemmer
1

Jeg prøver å ringe en web-tjeneste fra Excel 2003 modul. Måten jeg har implementert det skaper en NET COM bibliotek med alle klasser / metoder jeg trenger å bli utsatt for. Når jeg prøver å kalle en metode som spør en web-tjeneste fra Excel henrettelsen bare stopper på den linjen uten feil. Kan være det har å gjøre med referanser? Jeg bruker Microsoft.Web.Services2.dll. Jeg har prøvd å sette den i C: \ Windows \ System32 - uten hell

Takk!

Publisert på 05/10/2008 klokken 22:31
kilden bruker
På andre språk...                            


2 svar

stemmer
1

For å løse problemet jeg brukte Tilgang stedet for Excel. I Access ble det vist meg feil. Det viste seg at plasseringen av alle referansesamlinger bør være stedet for innringer-programmet (i dette tilfellet var det C: \ Programfiler \ Microsoft Office \ OFFICE11). Sencondly mine web services fullmakter ble lasting av endepunkt webadresser fra .config, som i denne sammenheng var C: \ Programfiler \ Microsoft Office \ OFFICE11 \ MSACCESS.EXE.config

Svarte 06/10/2008 kl. 03:43
kilden bruker

stemmer
2

Jeg er ikke sikker på om jeg får hele bildet, men forhåpentligvis noe av dette vil hjelpe. Jeg tror du har Excel VBA å kalle inn .NET via en COM-grensesnitt og deretter inn i en SOAP web SVC.

Du bør ha riktig PIA installert og referert av NET montering. COM grensesnitt skal se omtrent slik ut:



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

Implementere grensesnittet med en klasse noe sånt som dette:


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

Det første jeg vil gjøre er å erstatte din web-tjeneste samtale med en ekte enkel metode i NET-kode, for å sørge for at grensesnitt og Interop wrapper fungerer riktig.

Når skjelettet fungerer riktig kan det være lurt å vurdere å ringe til tjeneste med en HTTP-metoden i stedet for å bruke såpe. For eksempel, her er en enkel samtale ved hjelp av 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
Svarte 06/10/2008 kl. 16:13
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more