Condividi:        

da csv a xlsx - Domandone

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

da csv a xlsx - Domandone

Postdi Ricky0185 » 22/03/25 16:18

Salve, dal sito web tramite un bottone a tendina importo (secondo brand, data, periodo, etc.) un csv con tutti i dati di vendite distribuiti per mese, che viene compilato e pubblicato dal titolare del Brand. Circa 240 Brand di cui verifico ed incrocio i dati di vendita. Per mese o a volte per anno. Poichè non è possibile fare queste verifiche direttamente sulla pagina del sito, vanno scaricate le pagine secondo il nome brand, filtrate ed esportate e poi trasformate in excel e verificate secondo volume vendite.
Non chiedo come poter scaricare le pagine dei 240 Brand in un colpo solo, il probabile risolutore dovrebbe aver accesso al sito ed ai dati dei brand. Troppi dati personali. Ma siccome con una macro, dopo aver importato uno per uno i Brand, ho automatizzato la trasformazione da csv a xlsx così come tutte le complicate verifiche necessarie......Prendo fiato
pensavo di automatizzare l'inserimento della macro nei vari file csv, invece che inserirla manualmente uno per uno.
Sfortunatamente non conosco il processo di esportazione/importazione dei file ed avendolo chiesto ho ricevuto un rifiuto, ma se esiste altra via ben venga.
Vi saluto augurando una Buona Domenica
R
Ricky0185
Utente Senior
 
Post: 343
Iscritto il: 10/12/19 20:38

Sponsor
 

Re: da csv a xlsx - Domandone

Postdi Anthony47 » 22/03/25 22:28

Mi par di capire che tu non "importi" (all'interno di un file Excel) il contenuto del csv, ma "apri" il csv e lo pulisci ma sempre come file csv.
Se ora vuoi salvare il contenuto del csv "ripulito" insieme con la macro che lo ha generato il mio suggerimento e':
-completata la pulizia del csv copia tutto il contenuto e incollalo sul foglio n° 1 del tuo file che contiene la macro
-usa il comando Salva con nome per salvare il tutto

Ti torna?
Avatar utente
Anthony47
Moderatore
 
Post: 19575
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: da csv a xlsx - Domandone

Postdi Ricky0185 » 22/03/25 23:05

Hai visto l'immagine con i numeri? 1. Scelgo il brand dalla tendina 2. La scelta viene elaborata ed inseriti tutti i dati (in basso) 3. Il tutto viene "esportato" e salvato come csv in una dir da me scelta. Poi si apre il csv in excel e tramite i comandi dati-recupera-da file-da testo/csv etc. etc. si ottiene un file excel in csv bello chiaro che salvo in un altra dirctori e che posso utilizzare per estrapolare i dati che mi servono. Ho fatto una macro che una volta ottenuto il file pulito in csv posso fare tutte le molte operazioni per ottenere i dati che mi srvono: somme, diffrenze comparazioni, etc. Questa macro l'ho salvate su un word per poterla inserire in tutti i file che scarico, così da non farla ex novo tutte le volte.
La domanda era se è possibile inserirla in automatico "iniettandola" nel file csv pulito: hai il file csv chiaro aperto e la macro su un word.
Al momento apro il visual basic, inserisco un modulo, ci copio sopra la macro dal foglio word e la lancio e infine salvo il file in xlsm.
240 volte ogni fine mese, poi se ci sono cose ecclatanti a seguire invio con email, ma qui fortunatamente ho automatizzato il pluriinvio.
Te saluto
Ricky0185
Utente Senior
 
Post: 343
Iscritto il: 10/12/19 20:38

Re: da csv a xlsx - Domandone

Postdi Anthony47 » 23/03/25 00:40

Mah...
Il seguente metodo puo' inserire in un file in formato xlsm un modulo vba che contiene le macro che servono...

Crea un file Principale.xlsm, al cui interno Modulo1 contiene la/le macro che vuoi inserire negli altri file.
In questo stesso file inserisci la macro che usi per estrarre i dati giusti dal file csv. In coda a questa macro inserisci queste istruzioni:
Codice: Seleziona tutto
ThisWorkbook.VBProject.VBComponents("modulo1").Export ("D:\disperato.bas")       'Esporta Modulo1
'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                      'Salva il nuovo file


La teoria e' che quando il file csv e' pronto allora vai a salvare Modulo1 del file Principale.xlsm e poi lo importi sul file "csv" subito prima di salvarlo come .xlsm

Spero che sia adattabile al tuo caso...
Avatar utente
Anthony47
Moderatore
 
Post: 19575
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: da csv a xlsx - Domandone

Postdi Ricky0185 » 23/03/25 06:11

Oggi provo anche se ancora non ho capito il disperato.bas
Grazie
Ricky0185
Utente Senior
 
Post: 343
Iscritto il: 10/12/19 20:38

Re: da csv a xlsx - Domandone

Postdi Ricky0185 » 23/03/25 09:29

La macro contiene tutti i passaggi per ottenere il file csv in forma excel più tutte le operazioni che mi servono per estrarre i dati necessari.
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.
Poi dopo aver inserito in coda alla mia macro sul file Principale le tue istruzioni, salvo il file che è sempre xlsm.
Infine
quando il file csv e' pronto allora vai a salvare Modulo1 del file Principale.xlsm e poi lo importi sul file "csv" subito prima di salvarlo come .xlsm
Il file csv è pronto subito dopo che la macro ha finito il suo lavoro ed il file Principale.xlsm contiene già il modulo1 (inserito al momento della creazione come da tue istruzioni iniziali.
Infine non mi è chiaro come importare sul csv il file Principale contenente modulo1.
Pls, step by step riguardo l’importazione. Che ho anche già fatto, ma nella notte dei tempi, me lo ha ricordato il termine bas.
Dai che oggi è domenica e non si lavora.
Ricky0185
Utente Senior
 
Post: 343
Iscritto il: 10/12/19 20:38

Re: da csv a xlsx - Domandone

Postdi Anthony47 » 23/03/25 14:26

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 :D ) 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
Avatar utente
Anthony47
Moderatore
 
Post: 19575
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: da csv a xlsx - Domandone

Postdi Ricky0185 » 23/03/25 15:39

Denkyù
Facciamoci una risata. La macro che trasforma il file csv in xlsm l'ho ottenuta registrando tutta l'operazione di trasformazione di un preciso file csv. Poi l'ho copiata in un modulo standard degli altri file, lanciata. La macro oltre alla trasformazione fa tante altre cose tra cui il salvataggio in una dir dedicata. Dopo una trentina di questa operazione mi accorgo che la prima cella del foglio è uguale per tutti gli altri file e così tutto il resto. Indago e vedo che quando si apre un csv qualsiasi, ti viene chiesto il file da cui prelevare i dati per la trasformazione, ma nella macro registrata c'è un altro nome, quello del file di cui hai registrato la macro per cui i dati vengono presi da quell'altro nome (file). Mattinata buttata. Conclusione: bisogna prima fare la trasformazione da csv a xlsx classica e poi eventualmente tutte le altre operazioni con macro.
Con le orecchie abbassate ti dico
Ciao
Ricky0185
Utente Senior
 
Post: 343
Iscritto il: 10/12/19 20:38


Torna a Applicazioni Office Windows


Topic correlati a "da csv a xlsx - Domandone":


Chi c’è in linea

Visitano il forum: Nessuno e 19 ospiti

cron