Ændring Henvisninger til VBA biblioteker automatisk

Mark er i et arbejdsmiljø, der bruger to versioner af Excel? 2002 og 2003. Et problem opstår, når han åbner en projektmappe med en makro i Excel 2003, som installerer VB bibliotek af Office 11, og derefter senere nogen forsøger at åbne den samme projektmappe i Excel 2002, hvilket giver en fejl, når makroen forsøger at køre, fordi den ikke kan finde den korrekte VBA biblioteket reference. Mark ved, at han kan manuelt rette dette ved at gå til VB redaktør og rydde referencen til den manglende VBA biblioteket, men han overvejer, om der er nogen måde at have projektmappen kontrollere Excel-versionen automatisk og opdatere VBA biblioteket henvisningen i overensstemmelse hermed.

En måde at håndtere dette er at skabe og gemme projektmappen ved hjælp af tidligere version af Excel. Når den er åbnet i nyere version af Excel, vil henvisningen til VBA biblioteket opdateres automatisk. Excel gør opdateringerne kommer til senere versioner, men det gør ikke? T gøre dem gå til tidligere versioner.

Det betyder imidlertid, at selv hvis projektmappen er skabt i den tidligere version af Excel, når den åbnes, og derefter gemt i nyere version af Excel, vil brugere af den tidligere version har problemer med at åbne den.

Løsningen ifølge nogle kilder, er at ty til hvad der er kendt som? Sen binding.? Det betyder blot, at makroen er skrevet, så det ser op specifikke funktioner kun i run-time, ikke når makroen er gemt. Dette er refereret lidt i følgende artikel i Microsoft Knowledge Base:

http://support.microsoft.com/?kbid=244167

Du kan prøve sent bindende teknikker ved at åbne VBA editoren og fjerne alle henvisninger tidligere fastsatte. Derefter tilsættes kode ligner følgende nær starten af ​​din makro:

Hvis Application.Version = "10,0" Så 'Excel 2002
Dim oExcel Som Object 'Anvend sen binding
Set oExcel = CreateObject ("Excel.Application")
End hvis
Hvis Application.Version = "11,0" Så 'Excel 2003
'
»Tilføj uanset referencer, du ønsker til Excel 2003
'
End hvis

I slutningen af ​​makroen du sørge for at sætte nogen definerede objekter (såsom oExcel) til ingenting. Et godt eksempel på kode, der er mere robust end det, der præsenteres her, kan findes i disse artikler:

http://www.vbaexpress.com/kb/getarticle.php?kb_id=267
http://www.vbaexpress.com/kb/getarticle.php?kb_id=272

ExcelTips er din kilde til omkostningseffektiv Microsoft Excel træning. Dette tip (3340) gælder for Microsoft Excel 97, 2000, 2002, og 2003.


© 2021 Zajacperrone.com | Contact us: webmaster# zajacperrone.com