Copia modulo VBA - Suggerimenti per Excel

Sommario

Michelle scrive:

Abbiamo sviluppato un'applicazione Excel che genera una cartella di lavoro Excel unica da distribuire a ciascuno dei 54 broker. Devo includere diverse macro VBA in ciascuna delle 54 cartelle di lavoro di Excel che vengono distribuite ai broker. Come posso copiare un modulo VBA dalla cartella di lavoro Excel originale a ogni nuova cartella di lavoro Excel?

Questa è un'ottima domanda, Michelle. È facile usare il comando Fogli (). Copia per copiare un foglio di lavoro in una nuova cartella di lavoro, ma non è altrettanto facile copiare un modulo nella nuova cartella di lavoro. La soluzione prevede l'esportazione del modulo una volta e quindi l'importazione in ciascuna delle 54 cartelle di lavoro del broker man mano che vengono completate. Ecco una parte del codice con la soluzione.

' Delete any old stray copies of the module1 On Error Resume Next Kill ("C:MrXL1.bas") On Error GoTo 0 ' Export Module 1 ActiveWorkbook.VBProject.VBComponents("module1").Export ("c:MrXL1.bas") For x = 1 to 54 ThisBroker = Sheets("BrokerList").range("A" & x).value '… customization of plan omited for brevity Sheets(Array("Menu", "Plan")).Copy NBName = ActiveWorkbook.Name ' new book name ' Import Module 1 to this new book Application.VBE.ActiveVBProject.VBComponents.Import ("c:MrXL1.bas") ActiveWorkbook.SaveAs Filename:=ThisBroker ActiveWorkbook.Close Next x Kill ("C:MrXl1.bas")

I comandi VBE.ActiveProject.VBComponents.Export e VBE.ActiveProject.VBComponents… Import si occupano di copiare le macro nei nuovi libri.

In Excel 2002 e versioni successive, è necessario consentire esplicitamente a una macro di aggiungere codice a una cartella di lavoro. Vai a Strumenti, Macro, Sicurezza. Fare clic sulla seconda scheda: Editori attendibili. In basso a sinistra, scegli Considera attendibile l'accesso al progetto Visual Basic. In Excel 2007, vai a Icona Office, Opzioni Excel, Centro protezione, Impostazioni Centro protezione, Impostazioni macro e scegli Accesso attendibile al modello a oggetti del progetto VBA.

Attenzione

I comandi per esportare e importare i moduli, nonché i comandi per digitare nuove macro in una cartella di lavoro esistente, sono noti collettivamente come Estensibilità di Visual Basic o VBE. Se la cartella di lavoro utilizza comandi VBE, è molto probabile che la cartella di lavoro venga contrassegnata dagli scanner antivirus. Questo è un falso positivo. Il nome del presunto virus ha quasi sempre "euristico" nel nome. Ciò significa che lo scanner sta vedendo chiamate DLL che sembrano sospette, ma che non corrispondono necessariamente a virus noti. Di solito puoi scrivere al produttore del software antivirus e chiedere di inserire la tua cartella di lavoro di Excel nella lista bianca dopo aver spiegato cosa stai facendo e perché è una buona cosa da fare.

Articoli interessanti...