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

Cum se convertesc în lot mai multe fișiere CSV în fișiere XLS (X) în Excel?

Pentru a converti un fișier CSV în fișierul XlS sau XLSX este foarte ușor pentru dvs., aplicând funcția Salvare ca. Cu toate acestea, pentru a converti mai multe fișiere CSV în fișiere XLS sau XLSX dintr-un folder este nevoie de timp, salvând unul câte unul manual. Aici introduc un cod macro pentru a converti rapid toate fișierele CSV în fișiere XLS (x) dintr-un folder.

Convertiți în lot fișiere CSV în fișiere XlS (X) cu cod macro


Convertiți în lot fișiere CSV în fișiere XlS (X) cu cod macro

Pentru a converti mai multe fișiere CSV dintr-un folder în fișiere XLS (X), puteți face pașii de mai jos:

1. Activați un registru de lucru nou, apăsați Alt + F11 tastele pentru a deschide Microsoft Visual Basic pentru aplicații fereastră și faceți clic pe Insera > Module. Vedeți captura de ecran:
doc batch convert cvs xls 1

notițe: Asigurați-vă că toate fișierele CSV pe care doriți să le convertiți sunt închise.

2. Apoi lipiți mai jos codul macro în Module script și apăsați F5 tasta pentru a rula codul.

VBA: convertiți CSV în 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. În dialogul popping out, selectați folderul specificat care conține fișierele CSV pe care doriți să le convertiți. Vedeți captura de ecran:
doc batch convert cvs xls 2

4. clic OK, toate fișierele CSV din folderul selectat au fost convertite în fișiere XLS din acesta.
doc batch convert cvs xls 3

varful: Dacă doriți să convertiți fișiere CSV în fișiere XLSX, utilizați mai jos codul VBA.

VBA: convertiți fișierele CSV în 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

convertiți sau exportați rapid o gamă de foi pentru a separa XLS / Word / PDF sau alte fișiere în același timp

În mod normal, Excel nu vă acceptă cu o opțiune de exportare sau salvare rapidă a unui interval ca fișier CSV sau Excel. Dacă doriți să salvați o serie de date ca CSV sau registru de lucru în Excel, poate fi necesar să utilizați o macro VBA pentru a face acest lucru sau să copiați intervalul în clipboard și să-l lipiți într-un registru de lucru nou și apoi să salvați registrul de lucru ca CSV sau Caiet de lucru. Kutools pentru Excel mărește Excel cu Exportați gama în fișier utilitar pentru utilizatorii Excel care doresc să proceseze rapid următoarele operații :  Faceți clic pentru 30- zi de încercare gratuită completă!
doc exportă zona de celule în fișier
 
Kutools pentru Excel: cu peste 300 de programe de completare Excel la îndemână, puteți încerca gratuit fără limitare în 30 zile.

Articole relative:


Cele mai bune instrumente de productivitate Office

Kutools pentru Excel vă rezolvă majoritatea problemelor și vă crește productivitatea cu 80%

  • reutilizarea: Introduceți rapid formule complexe, diagrame și orice ai folosit anterior; Criptați celulele cu parola; Creați o listă de corespondență și trimiteți e-mailuri ...
  • Super Formula Bar (editați cu ușurință mai multe linii de text și formulă); Layout de citire (citiți și editați cu ușurință un număr mare de celule); Lipiți la interval filtrat...
  • Merge celule / rânduri / coloane fără a pierde date; Conținut de celule divizate; Combinați rânduri / coloane duplicate... Prevenirea celulelor duplicate; Comparați gamele...
  • Selectați Duplicat sau Unic Rânduri; Selectați Rânduri goale (toate celulele sunt goale); Super Find și Fuzzy Find în multe cărți de lucru; Selectare aleatorie ...
  • Copie exactă Mai multe celule fără modificarea referinței formulelor; Creați automat referințe la foi multiple; Introduceți gloanțe, Casete de selectare și multe altele ...
  • Extrageți textul, Adăugați text, eliminați după poziție, Eliminați spațiul; Creați și imprimați subtotaluri de paginare; Convertiți conținutul dintre celule și comentarii...
  • Super Filtru (salvați și aplicați scheme de filtrare altor foi); Sortare avansată după lună / săptămână / zi, frecvență și multe altele; Filtru special cu bold, italic ...
  • Combinați cărți de lucru și foi de lucru; Merge Tables pe baza coloanelor cheie; Împărțiți datele în mai multe foi; Conversia în loturi xls, xlsx și PDF...
  • Peste 300 de funcții puternice. Suportă Office / Excel 2007-2021 și 365. Acceptă toate limbile. Implementare ușoară în întreprinderea sau organizația dvs. Funcții complete Probă gratuită de 30 de zile. Garanție de returnare a banilor de 60 de zile.
fila kte 201905

Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
fundul officetab
Comentarii (38)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vreau să fac invers - converti XLS în CSV. funcționează acest script?
Sub CSVtoXLS()
'Actualizare deExtendoffice20170814
Dim xFd ca FileDialog
Dim xSPath ca șir
Dim xXLSFile ca șir
Dim xWsheet ca șir
Application.DisplayAlerts = Fals
Application.StatusBar = Adevărat
xWsheet = ActiveWorkbook.Name
Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
xFd.Title = „Selectați un folder:”
Dacă xFd.Show = -1 Atunci
xSPath = xFd.SelectedItems(1)
Altfel
Ieșiți din Sub
Final, dacă
Dacă Right(xSPath, 1) <> "\" Atunci xSPath = xSPath + "\"
xXLSFile = Dir(xSPath & „*.xls”)
Faceți în timp ce xXLSFile <> ""
Application.StatusBar = „Conversie: „ & xXLSFile
Workbooks.Open Filename:=xSPath & xXLSFile
ActiveWorkbook.SaveAs Replace(xSPath & xXLSFile, „.xls”, „.csv”, vbTextCompare), xlNormal
ActiveWorkbook.Închide
Windows(xWsheet).Activare
xXLSFile = Dir
Buclă
Application.StatusBar = Fals
Application.DisplayAlerts = Adevărat
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Sub ConvertCSVToXlsx()



Dim myfile ca șir

Dim oldfname As String, newfname As String

Dim fișierul de lucru

Dim folderName ca șir



Application.DisplayAlerts = Fals

Application.ScreenUpdating = Fals



' Capturați numele fișierului curent

myfile = ActiveWorkbook.Name



' Setați numele folderului pentru a se rezolva

folderName = "D:\tmp\"



' Parcurgeți toate fișierele CSV din folder

fișier de lucru = Dir(nume folder și „*.CSV”)

Do While workfile <> ""

' Deschideți fișierul CSV

Workbooks.Open Filename:=folderName & workfile

' Capturați numele vechiului fișier CSV

oldfname = ActiveWorkbook.FullName

' Convertiți în XLSX

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

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

ActiveWorkbook.Închide

' Ștergeți fișierul CSV vechi

Omoara Oldfname

Windows(fișierul meu).Activați

fișier de lucru = Dir()

Buclă



Application.DisplayAlerts = Adevărat

Application.ScreenUpdating = Adevărat



End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
„Sfat: dacă doriți să convertiți fișiere CSV în fișiere XLXS, trebuie doar să schimbați .xls în .xlsx în macrocomanda ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, „.csv”, „.xls”, vbTextCompare).”

Am încercat acest lucru și Excel nu a putut deschide fișierele rezultate. Am primit următorul mesaj: „Excel nu poate deschide fișierul „filename.xlsx” deoarece formatul sau extensia fișierului nu sunt valide. Verificați dacă fișierul nu a fost corupt și că extensia fișierului se potrivește cu formatul fișierului.”

Cu toate acestea, scriptul a avut succes pentru conversia în .xls.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Nu am găsit această problemă înainte, mulțumesc pentru comentariul corect. Am corectat pontul.
Acest comentariu a fost redus la minimum de moderatorul de pe site

Acest comentariu a fost redus la minimum de moderatorul de pe site
Vă mulțumesc foarte mult pentru scriptul dvs. excelent pentru CSV în XLS. Este mult mai util pentru munca mea
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,

Scriptul dvs. este grozav, dar nu convertește fișierul csv separat prin punct și virgulă. Poti sa postezi te rog o solutie pentru acestea?

mulțumesc
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ne pare rău, aici nu am nicio soluție, poate vă puteți pune întrebarea pe forumul nostru, altcineva vă poate ajuta. https://www.extendoffice.com/forum.html
Acest comentariu a fost redus la minimum de moderatorul de pe site
S-ar putea să întârziem, tocmai am avut problema în care trebuia să convertesc fișierele CSV cu punct și virgulă și l-am adăugat la cod și a funcționat, sper că va ajuta pe cineva

Schimbați „Workbooks.Open Filename:=xSPath & xCSVFile” Prin acest „Workbooks.Open Filename:=xSPath & xCSVFile, Delimiter:=";", Local:=True'
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am folosit fișierul mai multe csv la mai multe xls, dar am greșit fișierele xls de csv; informații separate, dar devin împreună în celule. Cum se poate rezolva asta?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Codul nu poate suporta fișierul csv prin virgulă separat.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Când am dat numele folderului, programul a spus: „Niciun fișier nu corespunde căutării tale”. Dar există 2,609 fișiere .csv în folder
Acest comentariu a fost redus la minimum de moderatorul de pe site
Codul nu acceptă fișierul separat de virgulă csv, fișierele dvs. sunt în acest caz?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Buna,

un articol grozav - multumesc! Aproape funcționează pentru mine.

Iată problema: am un fișier csv delimitat prin conducte. Am schimbat delimitatorul implicit de ferestre (prin panoul de control/setările regionale) în „|”. Deci, când deschid fișierul csv cu Excel, acesta se deschide, citește direct și analizează corect câmpurile în coloane. Tot ce trebuie să fac este să salvez ca xls sau xlsx, gata. Când mă uit la codul dvs., asta ar trebui să fie ceea ce face codul: deschide fișierele csv într-un folder, le salvează ca xls sau xlsx și trece peste ele.

Iată problema: când deschid acele fișiere Excel, delimitatorii conductelor sunt încă acolo, nimic nu este analizat în coloane. Acesta a fost comportamentul ca înainte de schimbarea mea la setarea implicită delimitată de conducte în setările Windows. Deci, se pare că Excel nu folosește acele setări Windows. Am verificat acest lucru prin înlocuirea delimitatorilor de țeavă cu delimitatori de virgulă într-o copie a fișierului - dintre cele două fișiere, delimitarea de țeavă a rămas neparsată, delimitarea de virgulă a fost convertită foarte bine.

Aveți idee unde poate fi găsită sau modificată acea delimitare a virgulelor încorporată în Excel sau dacă există o modalitate în cod de a face asta? Aș prefera să NU trebuie să caut și să înlocuiesc, apoi să salvez...

Mulțumesc, HC
Acest comentariu a fost redus la minimum de moderatorul de pe site
Dacă doriți să împărțiți datele în coloană pe baza delimitatorului conductei din Excel, utilizați funcția Text to Columns pentru a împărți datele prin / după acoperirea fișierelor csv în xls.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Nu face codul util pentru fișierele Excel.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, un script grozav care a funcționat pentru mine după ce am încercat toate celelalte scripturi disponibile pe Google. Am mai adăugat câteva linii care efectuează operațiunea text pe coloane pe care o doresc. Mă poate ajuta cineva cum să modific scriptul specificând locația folderului în unitatea locală în loc să deschid caseta de dialog, deoarece automatizez de fapt sistemul
. Mulțumesc anticipat
Acest comentariu a fost redus la minimum de moderatorul de pe site
Hi
Ați putea partaja scriptul care realizează textul în coloane?
Salutari
Acest comentariu a fost redus la minimum de moderatorul de pe site
Script excelent după ce ai căutat toate celelalte scripturi disponibile pe google. Poate cineva să ajute cum să modifice acest script specificând o locație de folder în unitatea locală, în loc să-i permită deschiderea casetei de dialog, deoarece automatizez de fapt sistemul. Mulțumesc anticipat
Acest comentariu a fost redus la minimum de moderatorul de pe site
Mișto fragment de cod. Foarte util. Dacă nu mă înșel, codul pentru .xlsx arată la fel cu codul .xls.

Această linie:
ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, „.csv”, „.xls”, vbTextCompare), xlWorkbookDefault

Presupun că ar trebui să fie: „.csv” , „.xlsx”, vbTextCompare etc.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am schimbat codul deci, descris mai sus; acum scriptul funcționează conform așteptărilor: generează fișiere xlsx
Acest comentariu a fost redus la minimum de moderatorul de pe site
nu, nu ai. încă scrie xls în ambele versiuni.
Acest comentariu a fost redus la minimum de moderatorul de pe site
această macrocomandă nu arată fișierul meu csv
Acest comentariu a fost redus la minimum de moderatorul de pe site
O mică problemă cu acest cod este că o anumită precizie (număr de zecimale) se poate pierde atunci când deschideți un csv și îl salvați ca xlsx.
Modul de a preveni acest lucru este de a selecta toate celulele imediat după deschidere, de a seta numărul de zecimale la valoarea dorită (15 pentru mine personal) și *apoi* salvarea ca xlsx

În caz contrar, xlsx are mai puține detalii (mai puțină precizie în ceea ce privește zecimale) decât csv original, ceea ce poate duce la probleme în unele aplicații
Acest comentariu a fost redus la minimum de moderatorul de pe site
îmi schimbă formatul coloanei date de la zz-mm-aaaa la zz/mm/aaaa, vă rugăm să vă ajutați cineva cu cum să împiedic ca acest script să schimbe formatele de coloană.
Multumesc mult.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, viper, după conversie, le puteți formata înapoi, selectați datele și faceți clic dreapta pentru a alege Formatare celule din meniul contextual, în dialogul Format Celld, sub fila Număr, faceți clic pe Personalizat în lista Categorii, apoi tastați mm-dd- aaaa în caseta de text din secțiunea din dreapta. Sau, dacă aveți Kutools pentru Excel, aplicați Aplicarea formatării datei pentru a schimba formatul datei după cum aveți nevoie.
Acest comentariu a fost redus la minimum de moderatorul de pe site
grozav articol. Cum pot salva toate fișierele convertite într-o nouă locație? Poti te rog sa actualizezi codul si sa mi-l trimiti. De exemplu, ai permite utilizatorului să-și aleagă folderul de destinație.


mulțumesc
Acest comentariu a fost redus la minimum de moderatorul de pe site
Aveți o eroare pe linia 22 din csv la xlsx
Cu eroare - ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, „.csv”, „.xls”, vbTextCompare), xlWorkbookDefault
Corectat - ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, „.csv”, „.xslx”, vbTextCompare), xlWorkbookDefault
Acest comentariu a fost redus la minimum de moderatorul de pe site
Mulțumesc pentru memento, l-am actualizat, mulțumesc din nou.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Primesc o eroare „Object variable or with block variable not set” pentru această linie:
xFd.Title = "/Users/[my.name]/Documents/[myFolder]" >> aceasta este calea unui anumit folder de pe computerul meu unde fac conversia (dosarul are o grămadă de fișiere csv în interior )

Fac ceva greșit aici?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Acest lucru funcționează pentru mine, dar extensia fișierului nu se schimbă. Orice sfaturi?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Același lucru pentru mine -- toate fișierele rămân .csv.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Toate fișierele CSV pe care le alegeți au fost salvate ca fișiere Excel noi, fișierele originale (csv) nu se modifică, există fișiere Excel noi cu același conținut.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am avut aceeasi problema. Dacă fișierul sursă are o extensie cu majuscule (.CSV), nu funcționează. Doar înlocuiți .csv în .CSV în codul din linia 22 și atunci ar trebui să funcționeze. Ei bine, cel puțin pentru mine a făcut-o.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cum aș încorpora codul în rutina fișierului batch XLSX pentru a separa datele în coloane separate prin punct și virgulă? Codul partajat convertește fișierul dintr-un .csv într-un .xlsx, dar nu separă datele în coloane separate.
Acest comentariu a fost redus la minimum de moderatorul de pe site
da nu e treaba.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Companii Buenos Dias

Adăugați la ce face scriptul, aș putea să transforme imediat textul în coloane, prin opțiunea care nu este delimitată de niciun tip de caracter, dimensiuni suplimentare ale coloanelor din diferite. Vale la pena aclarar that you tomo cada archivo por separado și aplicați la opțiunea de text în columnas, sub esa opțiune los pot converti în probleme, deschizându-și unul pentru unul, dar dacă ați luat macro și le-ați aplicat la misma macro la toate, inclusiv utilizând opțiunea de „USAR REFERENCIAS RELATIVAS”, nu face el proces bine, deoarece se înregistrează pozițiile de delimitare a fișierului cu privire la utilizarea de exemplu, dar trebuie să aplice nou la fiecare fișier, este deci, cum a deschis fiecare fișier nou. și le hiciera manualmente la opțiunea de delimitare și nu aplicați valorile locației coloanelor identificate în exemplul fișierului.

Ya inserte esa opcion în acest archivo, sin embargo pasa lo que indică în lineas arriba, solo requiero saber, cum pot face pentru a aplica conversia la fiecare fișier, aplicând la delimitarea câmpului, cum ar fi un nou fișier.


Workbooks.Open Filename:=xSPath & xCSVFile
ActiveWorkbook.SaveAs Replace(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”).Selectați
ActiveWorkbook.Salvare

HASTA AQUI AGREGUE YO

ActiveWorkbook.Închide
Windows(xWsheet).Activare
xCSVFile = Dir

Buclă
Application.StatusBar = Fals
Application.DisplayAlerts = Adevărat
End Sub

No se si me hago explica bien, pero es mi problema.
Nu există comentarii postate aici încă
Încărcați mai

Urmărește-ne

Copyright © 2009 - www.extendoffice.com. | Toate drepturile rezervate. Cu sprijinul ExtendOffice. | Harta site-ului
Microsoft și sigla Office sunt mărci comerciale sau mărci comerciale înregistrate ale Microsoft Corporation în Statele Unite și / sau în alte țări.
Protejat de Sectigo SSL