Primo probabile problema per futuro trasferimento su altro csv: le varie operazioni matematiche fanno riferimento al nome del file su cui vengono eseguite, es
- Codice: Seleziona tutto
ActiveCell.FormulaR1C1 = "=SUM(A002_Ca_dei_Frati[@[Column3]:[Column5]])"
dove A002 ..... è il nome del file.
Quello e’ il nome della tabella. Se vuoi continuare a importare come Tabella (che ha i suoi vantaggi, ma anche come vedi qualche svantaggio) allora potresti assegnare tu il nome alla tabella. Ad esempio, prima di inserire le formule inserisci questa istruzione:
- Codice: Seleziona tutto
Range("A3").ListObject.Name = "pippo"
Questa modifica il nome della tabella a cui appartiene A3 in “pippo” (ovviamente sei libero di usare un nome più adatto alla tua situazione). A questo punto nelle tue formule userai ad es
- Codice: Seleziona tutto
FormulaR1C1 = "=SUM(pippo[@[Column3]:[Column5]])"
Potresti anche valutare di importare il csv non come tabella; fai tutti i lavori e solo alla fine trasformi tutto l’intervallo in “Tabella con intestazioni” (così SEDE, Agente, 2024-01 etc saranno le intestazioni e non piu’ parte del DataBodyRange)
Infine non mi è chiaro come importare sul csv il file Principale contenente modulo1.
Pls, step by step riguardo l’importazione
Step by step? Sono 2 (due) istruzioni, per di più generosamente commentate! Comunque:
step 1- Codice: Seleziona tutto
ThisWorkbook.VBProject.VBComponents("modulo1").Export
Ricorda (e se non lo sai sappilo da adesso in poi) che ThisWorkbook indirizza il file che contiene la macro in esecuzione.
Questa istruzione preleva “modulo1” e lo “esporta” (cioè lo salva nel formato giusto) nel file che ho chiamato “disperato.bas” (non ti disperare per il nome file, che ovviamente sei libero di cambiare; quel nome l’avevo usato per aiutare un disperato utente che aveva salvato come xlsx una serie di files tutti simili (forse importati da file csv

) che invece dovevano essere salvati come xlsm)
step 2- Codice: Seleziona tutto
'QUI fai in modo che il file csv sia attivo
Application.VBE.ActiveVBProject.VBComponents.Import ("D:\disperato.bas") 'Importa nel nuovo file
'AGGIUNGI le istruzioni per salvare il file in formato xlsm
Qui il commento iniziale dice di fare in modo che il file che deve ricevere la macro sia quello attivo.
L’istruzione successiva fa l’importazione del file del salvataggio (il Modulo1 con tutto il suo contenuto) nel vbaproject del file attivo.
Infine devi salvare il file che ha appena ricevuto (importato) Modulo1
That's all, folks