Pietro ha regolarmente bisogno di copiare un foglio di lavoro “Master” in una nuova cartella di lavoro. Riesce a farlo bene con VBA. Tuttavia, al foglio di lavoro che sta copiando è associato del codice e anche il codice viene copiato. Pietro non vuole il codice nella copia, ma vuole che rimanga nell’originale. Si chiede se esista un modo, nella sua macro, per eliminare il codice nel foglio di lavoro appena copiato.
Il modo in cui puoi farlo dipende da come vuoi che appaia la cartella di lavoro finita (quella in cui stai copiando). In primo luogo, la cartella di lavoro finita conterrà macro, qualsiasi macro, o no? Se la risposta è no, non conterrà alcuna macro, allora puoi facilmente eseguire l’attività salvando la nuova cartella di lavoro in formato XLSX. In questo modo Excel si occupa di eliminare tutte le macro per te. Puoi farlo includendo una riga nel codice simile alla seguente quando salvi la cartella di lavoro:
ActiveWorkbook.SaveAs FileName:="MyExcelFile.xlsx", _
FileFormat:=xlOpenXMLWorkbook
Se, invece, desideri solo eliminare il codice del foglio di lavoro ma salvare la nuova cartella di lavoro con qualsiasi altro codice macro intatto, dovrai adottare un approccio diverso. In questo caso, potresti includere la seguente riga nella tua macro:
ActiveWorkbook.VBProject.VBComponents("Foglio1")
Ciò presuppone che la nuova cartella di lavoro sia la cartella di lavoro attiva e che il foglio di lavoro di cui si desidera eliminare il codice sia denominato Foglio1. Puoi anche utilizzare queste righe per eseguire la stessa operazione:
wsName = ActiveSheet.CodeName
With ActiveWorkbook.VBProject.VBComponents(wsName).CodeModule
.DeleteLines 1, .CountOfLines
End With
Si noti che wsName deve essere dichiarato come variabile stringa.