/ / Comportamento macro VBA Excel non portatile - excel-vba, excel-2010, vba, excel

Comportamento macro VBA Excel non portatile - excel-vba, excel-2010, vba, excel

Sto usando Excel 2010 e aggiungendo una piccola macro VBAa un foglio di calcolo. (Lo scopo della macro è quello di prendere i dati sul foglio attivo ed esportarli in un file CSV, ma quello è tangenziale alla domanda.) La macro determina il percorso di output per il file usando ThisWorkbook.Path. Ho anche aggiunto un pulsante personalizzato alla barra di accesso rapido per attivare la macro.

Dopo aver messo a punto un algoritmo funzionante nel miofoglio di calcolo sperimentale (Test.xlsm, memorizzato in un percorso), ho creato una copia del foglio di calcolo in un altro percorso e l'ho rinominato in _Database.xlsm. Quindi ho aperto _Database.xlsm ed eseguito la macro. Con mia sorpresa, il file è stato scritto nel percorso originale, non in quello nuovo. E guardando la barra degli strumenti di Windows, ho visto che Excel aveva aperto anche il file originale nel suo percorso originale.

Dopo un sacco di scherzi con le modifiche al codice,controllando le proprietà e cose del genere ho finalmente scoperto che potevo impedirlo aprendo il foglio di calcolo copiato, rimuovendo il pulsante della barra degli strumenti di accesso rapido, aggiungendolo di nuovo e quindi salvando il file. Le mie domande sono:

  1. Perché la macro non è "portatile indipendentemente" insieme al foglio di calcolo? Ad esempio, perché la copia mantiene questo tipo di legame con il foglio originale?

  2. C'è un modo in cui posso creare o modificare la macro per renderla portatile in quel senso?

risposte:

1 per risposta № 1

Se si desidera che una barra degli strumenti / un pulsante viaggi con afile (cioè non sempre rimandare alla versione originale) quindi è necessario aggiungerlo al file stesso, non al QAT. Il QAT "conosce" solo il file effettivo a cui hai collegato il pulsante.

Potrebbe essere meglio aggiungere la macro alla cartella di lavoro Macro personale e quindi farla funzionare solo su ActiveWorkbook.

Tuttavia, se si desidera distribuirlo ad altri utenti, è possibile mantenere la macro nella cartella di lavoro "database" e aggiungere una parte della barra multifunzione personalizzata. Vedere: http://www.rondebruin.nl/win/s2/win001.htm