Note: The other languages of the website are Google-translated. Back to English
English English

Come convertire in batch più file CSV in file XLS (X) in Excel?

Convertire un file CSV in un file XlS o XLSX è molto semplice applicando la funzione Salva con nome. Tuttavia, convertire più file CSV in file XLS o XLSX da una cartella richiede molto tempo salvandoli manualmente uno per uno. Qui presento un codice macro per convertire rapidamente in batch tutti i file CSV in file XLS (x) da una cartella.

Conversione in batch di file CSV in file XlS (X) con codice macro


Conversione in batch di file CSV in file XlS (X) con codice macro

Per convertire più file CSV da una cartella in file XLS (X), puoi procedere come segue:

1. Abilitare una nuova cartella di lavoro, premere Alt + F11 chiavi per aprire Microsoft Visual Basic, Applications Edition finestra e fare clic su inserire > Modulo. Vedi screenshot:
doc batch convertire cvs xls 1

Note:: Assicurati che tutti i file CSV che desideri convertire siano chiusi.

2. Quindi incollare sotto il codice macro nel file Modulo script e premete F5 chiave per eseguire il codice.

VBA: converti CSV in XLS

Sub CSVtoXLS()
'UpdatebyExtendoffice20170814
    Dim xFd As FileDialog
    Dim xSPath As String
    Dim xCSVFile As String
    Dim xWsheet As String
    Application.DisplayAlerts = False
    Application.StatusBar = True
    xWsheet = ActiveWorkbook.Name
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    xFd.Title = "Select a folder:"
    If xFd.Show = -1 Then
        xSPath = xFd.SelectedItems(1)
    Else
        Exit Sub
    End If
    If Right(xSPath, 1) <> "\" Then xSPath = xSPath + "\"
    xCSVFile = Dir(xSPath & "*.csv")
    Do While xCSVFile <> ""
        Application.StatusBar = "Converting: " & xCSVFile
        Workbooks.Open Filename:=xSPath & xCSVFile
        ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare), xlNormal
        ActiveWorkbook.Close
        Windows(xWsheet).Activate
        xCSVFile = Dir
    Loop
    Application.StatusBar = False
    Application.DisplayAlerts = True
End Sub

3. Nella finestra di dialogo che si apre, seleziona la cartella specificata contenente i file CSV che desideri convertire. Vedi screenshot:
doc batch convertire cvs xls 2

4. Clic OK, tutti i file CSV nella cartella selezionata sono stati convertiti in file XLS al suo interno.
doc batch convertire cvs xls 3

Consiglio: Se desideri convertire i file CSV in file XLSX, utilizza il codice VBA di seguito.

VBA: converti file CSV in XLSX

Sub CSVtoXLS()
'UpdatebyExtendoffice20170814
    Dim xFd As FileDialog
    Dim xSPath As String
    Dim xCSVFile As String
    Dim xWsheet As String
    Application.DisplayAlerts = False
    Application.StatusBar = True
    xWsheet = ActiveWorkbook.Name
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    xFd.Title = "Select a folder:"
    If xFd.Show = -1 Then
        xSPath = xFd.SelectedItems(1)
    Else
        Exit Sub
    End If
    If Right(xSPath, 1) <> "\" Then xSPath = xSPath + "\"
    xCSVFile = Dir(xSPath & "*.csv")
    Do While xCSVFile <> ""
        Application.StatusBar = "Converting: " & xCSVFile
        Workbooks.Open Filename:=xSPath & xCSVFile
        ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xlsx", vbTextCompare), xlWorkbookDefault
        ActiveWorkbook.Close
        Windows(xWsheet).Activate
        xCSVFile = Dir
    Loop
    Application.StatusBar = False
    Application.DisplayAlerts = True
End Sub

convertire o esportare rapidamente un intervallo di un foglio per separare XLS / Word / PDF o altri file di formato in una volta sola

Normalmente, Excel non ti supporta con un'opzione per esportare o salvare rapidamente un intervallo come file CSV o Excel. Se si desidera salvare un intervallo di dati come CSV o cartella di lavoro in Excel, potrebbe essere necessario utilizzare una macro VBA per eseguire questa operazione o copiare l'intervallo negli appunti e incollarlo in una nuova cartella di lavoro, quindi salvare la cartella di lavoro come CSV o Cartella di lavoro. Kutools for Excel aumenta Excel con Esporta intervallo su file utilità per gli utenti di Excel che desiderano elaborare rapidamente le seguenti operazioni :  Fai clic per una prova gratuita completa di 30 giorni!
doc esporta l'intervallo di celle in un file
 
Kutools per Excel: con più di 300 utili componenti aggiuntivi di Excel, liberi di provare senza limitazioni in 30 giorni.

Articoli relativi:


I migliori strumenti per la produttività in ufficio

Kutools per Excel risolve la maggior parte dei tuoi problemi e aumenta la tua produttività dell'80%

  • Riutilizzo: Inserisci rapidamente formule complesse, grafici e tutto ciò che hai usato prima; Crittografa celle con password; Crea mailing list e invia email ...
  • Bar Super Formula (modifica facilmente più righe di testo e formula); Layout di lettura (leggi e modifica facilmente un gran numero di celle); Incolla su intervallo filtrato...
  • Unisci celle / righe / colonne senza perdere dati; Contenuto delle celle divise; Combina righe / colonne duplicate... Impedisci celle duplicate; Confronta intervalli...
  • Seleziona Duplica o Unico Righe; Seleziona Righe vuote (tutte le celle sono vuote); Super Find e Fuzzy Find in molte cartelle di lavoro; Selezione casuale ...
  • Copia esatta Più celle senza modificare il riferimento della formula; Riferimenti di creazione automatica a più fogli; Inserisci punti elenco, Caselle di controllo e altro ...
  • Estrai testo, Aggiungi testo, Rimuovi per posizione, Rimuovi spazio; Creare e stampare totali parziali di paging; Converti contenuto e commenti tra celle...
  • Super filtro (salva e applica schemi di filtri ad altri fogli); Ordinamento avanzato per mese / settimana / giorno, frequenza e altro; Filtro speciale in grassetto, corsivo ...
  • Combina cartelle di lavoro e fogli di lavoro; Unisci tabelle in base a colonne chiave; Suddividi i dati in più fogli; Conversione in batch xls, xlsx e PDF...
  • Più di 300 potenti funzionalità. Supporta Office / Excel 2007-2019 e 365. Supporta tutte le lingue. Facile distribuzione nella tua azienda o organizzazione. Funzionalità complete Prova gratuita di 30 giorni. Garanzia di rimborso di 60 giorni.
scheda kte 201905

Scheda Office porta l'interfaccia a schede a Office e semplifica notevolmente il lavoro

  • Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Apri e crea più documenti in nuove schede della stessa finestra, piuttosto che in nuove finestre.
  • Aumenta la produttività del 50% e riduce centinaia di clic del mouse ogni giorno!
fondo officetab
Commenti (37)
Ancora nessuna valutazione. Puoi essere il primo a votare!
Questo commento è stato fatto dal moderatore sul sito
Voglio fare il contrario: convertire XLS in CSV. questo script funziona?
Sub CSVtoXLS()
'Aggiorna entroExtendoffice20170814
Dim xFd come finestra di dialogo
Dim xSPath come stringa
Dim xXLSFile come stringa
Dim xWsheet come stringa
Application.DisplayAlerts = False
Application.StatusBar = Vero
xWsheet = ActiveWorkbook.Name
Imposta xFd = Application.FileDialog(msoFileDialogFolderPicker)
xFd.Title = "Seleziona una cartella:"
Se xFd.Show = -1 Allora
xSPath = xFd.SelectedItems(1)
Altro
Exit Sub
End If
If Right(xSPath, 1) <> "\" Allora xSPath = xSPath + "\"
xXLSFile = Dir(xSPath & "*.xls")
Fai mentre xXLSFile <> ""
Application.StatusBar = "Conversione: " & xXLSFile
Cartelle di lavoro. Apri nome file:=xSPath e xXLSFile
ActiveWorkbook.SaveAs Sostituisci(xSPath & xXLSFile, ".xls", ".csv", vbTextCompare), xlNormal
ActiveWorkbook.Close
Windows(xWsheet).Attiva
xXLSFile = Dir
Ciclo continuo
Application.StatusBar = Falso
Application.DisplayAlerts = Vero
End Sub
Questo commento è stato fatto dal moderatore sul sito
Sub ConvertiCSVToXlsx()



Oscura il mio file come stringa

Dim oldfname As String, newfname As String

File di lavoro debole

Dim folderName As String



Application.DisplayAlerts = False

Application.ScreenUpdating = False



' Cattura il nome del file corrente

miofile = ActiveWorkbook.Name



' Imposta il nome della cartella su cui lavorare

nomecartella = "D:\tmp\"



' Scorri tutti i file CSV nella cartella

file di lavoro = Dir(nomecartella & "*.CSV")

File di lavoro Do While <> ""

'Apri file CSV

Cartelle di lavoro.Apri nomefile:=nomecartella e file di lavoro

' Cattura il nome del vecchio file CSV

oldfname = ActiveWorkbook.FullName

' Converti in XLSX

newfname = folderName & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & ".xlsx"

ActiveWorkbook.SaveAs Filename:=newfname, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=True

ActiveWorkbook.Close

' Elimina il vecchio file CSV

Uccidi il vecchio nome

Windows(miofile).Attiva

file di lavoro = Dir()

Ciclo continuo



Application.DisplayAlerts = Vero

Application.ScreenUpdating = True



End Sub
Questo commento è stato fatto dal moderatore sul sito
"Suggerimento: se desideri convertire file CSV in file XLXS, devi solo cambiare .xls in .xlsx nella macro ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare)."

Ho provato questo ed Excel non è stato in grado di aprire i file risultanti. Ho ricevuto il seguente messaggio: "Excel non può aprire il file 'nomefile.xlsx' perché il formato del file o l'estensione del file non sono validi. Verifica che il file non sia stato danneggiato e che l'estensione del file corrisponda al formato del file."

Tuttavia, lo script ha avuto successo per la conversione in .xls.
Questo commento è stato fatto dal moderatore sul sito
Non ho riscontrato questo problema prima, grazie per il tuo commento corretto. Ho corretto il suggerimento.
Questo commento è stato fatto dal moderatore sul sito

Questo commento è stato fatto dal moderatore sul sito
Grazie mille per il tuo eccellente script da CSV a XLS. È molto più utile per il mio lavoro
Questo commento è stato fatto dal moderatore sul sito
Ciao,

Il tuo script è fantastico ma non converte il csv separato da punto e virgola. Puoi postare una soluzione per quelli?

Grazie
Questo commento è stato fatto dal moderatore sul sito
Scusa, qui non ho alcuna soluzione, forse puoi porre la tua domanda al nostro forum, qualcun altro potrebbe aiutarti. https://www.extendoffice.com/forum.html
Questo commento è stato fatto dal moderatore sul sito
potrei essere in ritardo ho appena riscontrato il problema in cui dovevo convertire i file CSV punto e virgola e l'ho aggiunto al codice e ha funzionato spero che questo possa aiutare qualcuno

Modifica 'Workbooks.Open Filename:=xSPath & xCSVFile' con questo 'Workbooks.Open Filename:=xSPath & xCSVFile, Delimiter:=";", Local:=True'
Questo commento è stato fatto dal moderatore sul sito
Ho usato il file multiple csv su più xls ma ho sbagliato i file xls de csv; informazioni separate ma si uniscono in celle. Come può essere risolto?
Questo commento è stato fatto dal moderatore sul sito
Il codice non può supportare il file CSV con virgole separate.
Questo commento è stato fatto dal moderatore sul sito
Quando ho dato il nome della cartella, il programma ha detto: "Nessun file corrisponde alla tua ricerca". Ma ci sono 2,609 file .csv nella cartella
Questo commento è stato fatto dal moderatore sul sito
Il codice non supporta il file CSV con virgole separate, i tuoi file sono in questo caso?
Questo commento è stato fatto dal moderatore sul sito
Ciao,

un ottimo articolo - grazie! Quasi funziona per me.

Ecco il problema: ho un file CSV delimitato da pipe. Ho cambiato il delimitatore di Windows predefinito (tramite pannello di controllo/impostazioni regionali) in "|". Quindi, quando apro il file CSV con Excel, si apre, legge direttamente e analizza correttamente i campi in colonne. Tutto quello che devo fare è salvare come xls o xlsx, fatto. Quando guardo il tuo codice, dovrebbe essere quello che fa il codice: apre i file CSV in una cartella, li salva come xls o xlsx e ci scorre sopra.

Ecco il problema: quando apro quei file Excel, i delimitatori di pipe sono ancora presenti, nulla viene analizzato nelle colonne. Questo era il comportamento di prima della mia modifica all'impostazione predefinita delimitata da pipe nelle impostazioni di Windows. Quindi sembra che Excel non utilizzi quelle impostazioni di Windows. L'ho verificato sostituendo i delimitatori di pipe con delimitatori di virgole in una copia del file: dei due file, il delimitato da pipe è rimasto non analizzato, la virgola delimitata è stata convertita correttamente.

Qualche idea su dove sia possibile trovare o modificare la delimitazione della virgola incorporata in Excel o se esiste un modo nel codice per farlo? Preferirei NON dover fare una ricerca e sostituire, quindi salvare...

Grazie, HC
Questo commento è stato fatto dal moderatore sul sito
Se si desidera dividere i dati in colonne in base al delimitatore di pipe in Excel, utilizzare semplicemente la funzione Testo in colonne per dividere i dati per/dopo aver convertito i file CSV in xls.
Questo commento è stato fatto dal moderatore sul sito
Non rende davvero il codice utile per i file excel.
Questo commento è stato fatto dal moderatore sul sito
Ciao, ottimo script che ha funzionato per me dopo aver provato tutti gli altri script disponibili in Google. Ho aggiunto alcune righe in più che eseguono l'operazione di testo su colonne che desidero. Qualcuno può aiutarmi a modificare lo script specificando la posizione della cartella nell'unità locale invece di aprire la finestra di dialogo poiché sto effettivamente automatizzando il sistema
. Grazie in anticipo
Questo commento è stato fatto dal moderatore sul sito
Hi
Potresti condividere lo script che esegue il testo in colonne??
I migliori saluti
Questo commento è stato fatto dal moderatore sul sito
Ottimo script dopo aver cercato tutti gli altri script disponibili in Google. Qualcuno può aiutare a modificare questo script specificando una posizione della cartella nell'unità locale invece di consentirgli di aprire la finestra di dialogo poiché sto effettivamente automatizzando il sistema. Grazie in anticipo
Questo commento è stato fatto dal moderatore sul sito
Un bel po' di codice. Molto utile. Se non sbaglio, il codice per .xlsx ha lo stesso aspetto del codice .xls.

Questa linea:
ActiveWorkbook.SaveAs Sostituisci(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare), xlWorkbookDefault

Presumo che dovrebbe essere: ".csv" , ".xlsx", vbTextCompare ecc.
Questo commento è stato fatto dal moderatore sul sito
Ho modificato il codice così, descritto sopra; ora lo script funziona come previsto: genera file xlsx
Questo commento è stato fatto dal moderatore sul sito
no non l'hai fatto. dice ancora xls in entrambe le versioni.
Questo commento è stato fatto dal moderatore sul sito
questa macro non mostra il mio file csv
Questo commento è stato fatto dal moderatore sul sito
Un piccolo problema con questo codice è che una certa precisione (numero di decimali) può andare persa quando si apre un CSV e lo si salva come xlsx.
Il modo per impedirlo è selezionare tutte le celle subito dopo l'apertura, impostare il numero di cifre decimali sull'importo desiderato (15 per me personalmente) e *quindi* salvare come xlsx

Altrimenti, xlsx ha meno dettagli (meno accuratezza in termini di decimali) rispetto al csv originale, il che può causare problemi in alcune applicazioni
Questo commento è stato fatto dal moderatore sul sito
cambia il formato della mia colonna della data da gg-mm-aaaa a gg/mm/aaaa, per favore qualcuno può aiutare con come impedire a questo script di modificare i formati delle colonne.
Grazie mille.
Questo commento è stato fatto dal moderatore sul sito
Ciao, vipera, dopo la conversione, puoi formattarli nuovamente, selezionare le date e fare clic con il pulsante destro del mouse per scegliere Formato celle dal menu contestuale, nella finestra di dialogo Formato cella, nella scheda Numero, fai clic su Personalizzato nell'elenco Categoria, quindi digita mm-dd- aaaa nella casella di testo nella sezione a destra. Oppure, se hai Kutools per Excel, applica il Applica formattazione della data per modificare il formato della data di cui hai bisogno.
Questo commento è stato fatto dal moderatore sul sito
ottimo articolo. Come posso salvare tutti i file convertiti in una nuova posizione? Puoi aggiornare il codice e inviarmelo. Come consentire all'utente di scegliere la sua cartella di destinazione.


Grazie
Questo commento è stato fatto dal moderatore sul sito
Hai un errore sulla riga 22 del csv in xlsx
Con errore - Sostituisci ActiveWorkbook.SaveAs (xSPath e xCSVFile, ".csv", ".xls", vbTextCompare), xlWorkbookDefault
Corretto - Sostituisci ActiveWorkbook.SaveAs (xSPath e xCSVFile, ".csv", ".xslx", vbTextCompare), xlWorkbookDefault
Questo commento è stato fatto dal moderatore sul sito
Grazie per il tuo promemoria, l'ho aggiornato, grazie ancora.
Questo commento è stato fatto dal moderatore sul sito
Ricevo un errore "Variabile oggetto o con variabile blocco non impostata" per questa riga:
xFd.Title = "/Users/[my.name]/Documents/[myFolder]" >> questo è il percorso di una cartella particolare sul mio computer in cui sto eseguendo la conversione (la cartella contiene un mucchio di file CSV )

Sto facendo qualcosa di sbagliato qui?
Questo commento è stato fatto dal moderatore sul sito
Questo funziona per me, ma l'estensione del file non cambia. Qualche consiglio?
Questo commento è stato fatto dal moderatore sul sito
Lo stesso per me: tutti i file rimangono .csv.
Questo commento è stato fatto dal moderatore sul sito
Tutti i file csv scelti sono stati salvati come nuovi file excel, i file originali (csv) non cambiano, esistono nuovi file excel con lo stesso contenuto.
Questo commento è stato fatto dal moderatore sul sito
Ho avuto lo stesso problema. Se il tuo file sorgente ha un'estensione in lettere maiuscole (.CSV), non funziona. Basta sostituire .csv in .CSV nel codice nella riga 22 e quindi dovrebbe funzionare. Beh, almeno per me è stato così.
Questo commento è stato fatto dal moderatore sul sito
Come incorporare il codice nella routine del file batch XLSX per separare i dati con punto e virgola in colonne separate? Il codice condiviso converte il file da .csv a .xlsx, ma non separa i dati in colonne separate.
Questo commento è stato fatto dal moderatore sul sito
si non funziona
Questo commento è stato fatto dal moderatore sul sito
Buenos dias compagni

Adiciona a lo que hace el script, quisiera poder convertir inmediatamente el texto en columnas, por la opción que no es delimitado por ningún tipo de caracter, adicional los tamaños de las columnas son diferentes. Vale la pena aclarar que si tomo cada archivo por separato y le aplico la opción de texto en columnas, bajo esa opción los puedo convertir sin problemas, abriéndolos uno por uno, pero si grabo esa macro y le aplico la misma macro a todos, inclusive usando la opzione de "USAR REFERENCIAS RELATIVAS", no hace el proceso bien, porque el graba las posiciones de la delimitación del archivo que uso de ejemplo, pero necesito que lo aplique nuevo a cada archivo, es decir, como si abriera cada archivo nuevo e le hiciera manualmente l'opzione di delimitazione e non aplique los valores de ubicación de las columnas identificatodos en el archivo ejemplo.

Ya inserte esa opcion en este archivo, sin embargo pasa lo que indico en la lineas arriba, solo requiero saber como puedo hacer para aplicar la conversion a cada archivo, aplicando la delimitazione del campo como su fuera un archivo nuevo.


Cartelle di lavoro. Apri nome file:=xSPath e xCSVFile
ActiveWorkbook.SaveAs Sostituisci(xSPath & xCSVFile, ".csv", ".xlsx", vbTextCompare), xlWorkbookDefault

ESTA PARTE ES LA QUE AGREGUE APLICANDO EL FORMATO DEL TEXTO A COLUMNAS

StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(18 _
, 1), Array(38, 1)), TrailingMinusNumbers:=True
ActiveCell.Cells.Select
ActiveCell.Cells.EntireColumn.AutoFit
ActiveCell.Offset(1, 0).Range("A1").Seleziona
ActiveWorkbook.Salva

HASTA AQUI AGREGUE YO

ActiveWorkbook.Close
Windows(xWsheet).Attiva
xFileCSV = Dir

Ciclo continuo
Application.StatusBar = Falso
Application.DisplayAlerts = Vero
End Sub

No se si me hago explicar bien, pero es mi problema.
Non ci sono ancora commenti pubblicati qui
Lasciate i vostri commenti
Pubblicazione come ospite
×
Valuta questo post:
0   Personaggi
Posizioni suggerite