Avatar billede nhoff Nybegynder
13. oktober 2004 - 19:44 Der er 6 kommentarer og
1 løsning

Opret VBA reference ved runtime

Hej

Jeg har i Office 2003 udviklet en Access-applikation der bl.a. generer e-mails til afsendelse i Outlook. Office 2003 kører med Outlook Object Library 11.0, men brugerne sidder på Office 2000 eller XP, der kører med Library 9.0.
Jeg har fundet ud af hvordan man fjerner en 'missing' reference runtime (http://eksperten.dk/spm/498567), men er der nogen der ved hvordan tilføjer man en reference - i dette tilfælde til Outlook Library 9.0?

Hilsen
Nikolaj
13. oktober 2004 - 21:51 #1
Du kan enten tilføje en fil- eller en Guid-reference.

Guid-referencen er som regel det mest anvendelige, da man ofte ikke kender filens placering på den enkelte maskine.

Syntaksen er således:

Application.References.AddFromGuid "{00020813-0000-0000-C000-000000000046}",0,5

Dette tilføjer Excel 11.0 som reference.
Og hvor fik jeg så lige den kode fra?

Jo, i debug-viinduet skrev jeg:
?Application.References("Excel").Guid

(på det tidspunkt havde jeg selvfølgelig ssat referencen manuelt forinden)
Avatar billede nhoff Nybegynder
13. oktober 2004 - 22:20 #2
Tak for svaret!

Der er blot et enkelt problem. Når jeg afvikler i debug-vinduet får jeg koden:
{00062FFF-0000-0000-C000-000000000046}

- den giver en fejl når jeg indsætter den i den kode du nævnte først:
Application.References.AddFromGuid {00062FFF-0000-0000-C000-000000000046}

Hvor får du ",0,5" fra? Er det parametre i kommandoen AddFromGuid? Eller ser excelreferencen bare således ud?

Hilsen
Nikolaj
13. oktober 2004 - 22:24 #3
0 og 5 har jeg ingen ide om hvad bruges til. Faktisk kan jeg se, at de bør være 1 og 5 i stedet (hvis du spørger på Application.References("Excel").major)

Disse 2 værdier er (så vidt jeg har erfaret) de samme for alle referencer.

Har du husket at slette referencen inden du forsøger at sætte den igen? Ellers får du en fejl.
Avatar billede nhoff Nybegynder
13. oktober 2004 - 22:34 #4
Jep. Så var den der!

Sjovt nok kan jeg godt afvikle den ved at kalde funktionen fra en makro, men kalder jeg funktionen ved en OnClick-hændelse på en knap får jeg fejlmeddelelsen:

"Function or interface marked as restricted, or the function uses an Automation type not supported in Visual Basic"...
13. oktober 2004 - 22:37 #5
Er der andre funktioner, som ikke virker, når Excel-referencen magler? Det skaber ofte syntaksfejl rundt omkring i koden, hvorfor Access kan have svært ved at afvikle helt almindelige kommandoer. Hvorfor det lige virker vha en makro, aner jeg ikke :o(
Avatar billede nhoff Nybegynder
13. oktober 2004 - 22:39 #6
Nej, alt andet kører gnidningsfrit (?)

Jeg har lidt på fornemmelsen at spørgsmålet skal i UFO-kassen :-)
13. oktober 2004 - 22:42 #7
ja, du har nok ret ;o)

Af og til må man bare acceptere, at vi mennesker simpelthen er for små og ubetydelige til at kunne rumme og forså Microsofts verden!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester