2016-06-30 5 views
0

Ich benutze die folgende immer die Zeit, um Excel-Daten von Access zu bearbeiten.VBA Legen Sie fest, Excel.Application Object Arbeitsmappe bereits zu öffnen, anstatt eine neue Excel-Instanz zu erstellen

Set xl = CreateObject("Excel.Object") 

Diese Methode erstellt jedoch eine neue Excel-Instanz und wendet beispielsweise nur die Formatierung an.

Bezieht sich nur auf die Instanz eines Excel-Objekts, das mit der ersten Codezeile erstellt wurde.

Das Problem, das ich habe ist, dass ich bereits eine Instanz von Excel geöffnet habe und es VBA in Access gibt, die ich verwenden möchte, um Formatierung auf die bereits geöffnete Datei anzuwenden, um es für den Import vorzubereiten. Ich denke, ich könnte die neue Instanz von Excel erstellen und nur auf die Arbeitsmappe verweisen, mit der ich arbeite, mit xl.Workbook(blah).Activate, aber das scheint ein bisschen chaotisch.

Ja, ich könnte den Code nach Excel verschieben, aber das vereitelt den Zweck der Manipulation von Excel aus Access und meine VBA an zentraler Stelle für Benutzer zugänglich. Mit

+0

Blick in 'GetObject()' Solange es gibt nur eine einzige Instanz von Excel bereits geöffnet ist, sollte es tun, was Sie wollen. –

+0

Vielleicht kann dies hilfreich sein: http://stackoverflow.com/questions/2971473/can-vba-reach-across-instances-of-excel – Ralph

+0

Stellt Set xlApp = GetObject (, "Excel.Application") passen die Rechnung ? Dies wird ausgezeichnet, wenn es geöffnet ist. –

Antwort

0

Versuchen:

set xl = GetObject(,"Excel.Application") 
Verwandte Themen