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

Cum se convertesc în lot mai multe fișiere Excel în fișiere CSV în Excel?

În Excel, putem converti registrul de lucru în fișier CSV cu funcția Salvare ca, dar ați putea ști cum să convertiți mai multe fișiere Excel în fișiere CSV separate? În acest articol, introduc un cod VBA pentru a converti în lot toate fișierele Excel dintr-un folder în fișiere CSV în Excel.

Convertiți în lot fișierele Excel ale unui folder în fișiere CSV cu VBA

Convertiți foi de registru de lucru în fișiere CSV separate cu Kutools pentru Excelidee bună3


Convertiți în lot fișierele Excel ale unui folder în fișiere CSV cu VBA

În Excel, nu există nicio funcție încorporată care poate rezolva rapid acest job, cu excepția VBA.

1. Activați Excel și apăsați Alt + F11 tastele deschise Microsoft Visual Basic pentru aplicații fereastră.

2. clic Insera > Module pentru a crea un nou modul.

3. Copiați codul de mai jos și lipiți-le în noua fereastră a modulului.

VBA: convertiți în lot fișiere Excel în CSV

Sub WorkbooksSaveAsCsvToFolder()

'UpdatebyExtendoffice20181031

Dim xObjWB As Workbook

Dim xObjWS As Worksheet

Dim xStrEFPath As String

Dim xStrEFFile As String

Dim xObjFD As FileDialog

Dim xObjSFD As FileDialog

Dim xStrSPath As String

Dim xStrCSVFName As String

Dim xS  As String

    Application.ScreenUpdating = False

    Application.EnableEvents = False

    Application.Calculation = xlCalculationManual

    Application.DisplayAlerts = False

    On Error Resume Next

Set xObjFD = Application.FileDialog(msoFileDialogFolderPicker)

    xObjFD.AllowMultiSelect = False

    xObjFD.Title = "Kutools for Excel - Select a folder which contains Excel files"

    If xObjFD.Show <> -1 Then Exit Sub

    xStrEFPath = xObjFD.SelectedItems(1) & "\"

    Set xObjSFD = Application.FileDialog(msoFileDialogFolderPicker)

 
    xObjSFD.AllowMultiSelect = False

    xObjSFD.Title = "Kutools for Excel - Select a folder to locate CSV files"

    If xObjSFD.Show <> -1 Then Exit Sub

    xStrSPath = xObjSFD.SelectedItems(1) & "\"


    xStrEFFile = Dir(xStrEFPath & "*.xls*")


    Do While xStrEFFile <> ""

       xS = xStrEFPath & xStrEFFile

        Set xObjWB = Application.Workbooks.Open(xS)

        xStrCSVFName = xStrSPath & Left(xStrEFFile, InStr(1, xStrEFFile, ".") - 1) & ".csv"

        xObjWB.SaveAs Filename:=xStrCSVFName, FileFormat:=xlCSV

        xObjWB.Close savechanges:=False

        xStrEFFile = Dir

  Loop

    Application.Calculation = xlCalculationAutomatic

    Application.EnableEvents = True

    Application.ScreenUpdating = True

    Application.DisplayAlerts = True

End Sub

4. presa F5 tasta, selectați folderul conține fișierele Excel pe care doriți să le convertiți în fișiere CSV în prima fereastră de dialog.
doc lot la CSV 1

5. clic OK, apoi în al doilea dialog popping, selectați folderul pentru plasarea fișierelor CSV.
doc lot la CSV 2

6. clic OK, acum fișierele Excel din folder au fost convertite în fișiere CSV și salvate într-un alt folder.
doc lot la CSV 3


Convertiți foi de registru de lucru în fișiere CSV separate cu Kutools pentru Excel

După cum știam, putem converti întregul registru de lucru într-un singur fișier CSV în Excel cu funcția sa Salvare ca. Dar, în unele momente, doriți să convertiți o singură foaie în fișier CSV, în acest caz, fișierul Carnet de lucru divizat utilitatea Kutools pentru Excel te poate ajuta.

Kutools pentru Excel, cu mai mult de 300 funcții la îndemână, vă face munca mai ușoară. 

După instalare Kutools pentru Excel, faceți următoarele:(Descărcați gratuit Kutools pentru Excel acum!)

1. Activați registrul de lucru pe care doriți să-l convertiți ca fișiere CSV separate, faceți clic pe Kutools Plus > Workbook > Carnet de lucru divizat.
doc lot la CSV 4

2. În Carnet de lucru divizat caseta de dialog, verificați numele foii pe care doriți să o împărțiți (toate foile sunt verificate implicit), verificați Salvează ca tip, alege CSV (Macintosh) (* .CSV) din lista drop-down.
doc lot la CSV 5

3. clic Despică a ieși afară a Căutați dosarul , alegeți sau creați un folder pentru a plasa fișierele CSV.
doc lot la CSV 6

4. clic OK, acum registrul de lucru a fost împărțit ca fișiere CSV separate.
doc lot la CSV 7


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 (36)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ty chiar funcționează dragă!!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Funcționează excelent, mulțumesc pentru cod!
Singura mea observație ar fi că acest cod taie numele fișierelor atunci când există un „.” în numele fișierului însuși (ex. fișier.123.csv se transformă în fișier.csv).
Acest comentariu a fost redus la minimum de moderatorul de pe site
Ați găsit o cale de a ocoli această problemă?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Carol,

Pe linia 33 am înlocuit acest cod:

xStrCSVFName = xStrSPath & Left(xStrEFFile, InStr(1, xStrEFFile, ".") - 1) & ".csv"

Cu acest cod:

xStrCSVFName = xStrSPath & Left(xStrEFFile, InStr(1, xStrEFFile, ".xlsx") - 1) & ".csv"

Rețineți că, dacă utilizați o altă extensie Excel (.xls, .xlsm etc.), ar trebui să o schimbați ca atare :)
Acest comentariu a fost redus la minimum de moderatorul de pe site
Mulțumesc foarte mult! Asta mi-a economisit atât de mult timp!!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Inca o mica observatie:

Dacă toate celulele din fișierele Excel originale sunt formatate ca „General”, se pierde o anumită acuratețe atunci când fișierul este salvat ca CSV
De exemplu, dacă valoarea unei celule în Excel este 0.123456789123456, atunci valoarea din CSV va fi 0.123456789 (lipsește zecimale rămase), atâta timp cât celula a fost formatată ca „General”. Acest lucru poate fi rezolvat prin formatarea tuturor celulelor din fișierul Excel la orice altceva decât „General” (de exemplu, „Text”). În acest caz, CSV *va* avea în continuare toate detaliile/precizia. Adică, valorile din fișierele Excel vor fi complet intacte după salvarea ca CSV.

Cum ar putea fi modificată această macrocomandă, astfel încât să seteze formatarea tuturor celulelor din fișierul Excel la „Text”, înainte de a salva ca CSV?
Îmi imaginez că trebuie să folosească cumva următoarele, dar nu îmi pot da seama cum să includ corect în macrocomandă:

Celule. Selectați
Selection.NumberFormat = „@”
Acest comentariu a fost redus la minimum de moderatorul de pe site
Vă mulțumesc pentru partajarea. Încerc să salvez mai multe fișiere xls care conțin o valoare unică, producând un prompt care cere da sau nu înainte de a salva. Solicitarea scrie...

„Unele funcții din registrul de lucru s-ar putea pierde dacă îl salvați ca CSV (delimitat prin virgulă). Doriți să continuați să utilizați acest format?”

Ar ști cineva unde să adauge codul pentru a răspunde da la această solicitare?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Cred că merită adăugată o mai bună gestionare a erorilor pentru fișierele cu caractere speciale, momentan acestea sunt pur și simplu ignorate.
Acest comentariu a fost redus la minimum de moderatorul de pe site
top multumesc :)
Acest comentariu a fost redus la minimum de moderatorul de pe site
Acest lucru este uimitor. Mulțumesc!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua, există o schimbare rapidă a codului care mi-ar permite să schimb de la un CSV UTF-8 (delimitat prin virgulă) la doar CSV (delimitat prin virgulă)? Am încercat prima metodă și am avut speranță, dar se pare că nu le va schimba, deoarece sunt deja într-o formă de CSV. Poate că există un proces mai ușor, dar nu găsesc nimic. Trebuie să convertesc poate 150 de fișiere care au fost salvate în acest format și nu vreau să deschid fiecare fișier și să salvez ca dacă îl pot evita. Orice ajutor este apreciat!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Deci, după ce am analizat codul puțin mai îndeaproape, am văzut unde trebuie să fie tipul de fișier inițial .xls. Deci, înlocuirea cu .csv a rezolvat problema.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua,
das Makro funktioniert ganz gut, aber bei mir kommt, wenn ich als filename:xlCSVUTF8 eine anders formatierte CSV raus als ich über speichern unter -> csv(utf8) erreiche!
Acest comentariu a fost redus la minimum de moderatorul de pe site
xObjWB.SaveAs Filename:=xStrCSVFName, FileFormat:=xlCSVUTF8
Acest comentariu a fost redus la minimum de moderatorul de pe site
de asemenea, er schreibt die verschiedenen Spalten alle in eine Spalte, dass müsste der Fehler sein ?!
Acest comentariu a fost redus la minimum de moderatorul de pe site
salut.. in unele fisiere excel care vor fi convertite in csv exista un nominal care trebuie rotunjit, care este solutia? mulțumesc
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Sam, nu există nicio soluție pentru a rezolva această problemă, cu excepția formatării datelor ca text înainte de a converti fișierul în csv.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Când am executat acest lucru, a convertit doar prima foaie de lucru și a ignorat foile suplimentare din registrul de lucru. Există o modalitate de a edita codul pentru a include foi suplimentare?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, puteți încerca codul de mai jos, acesta va salva toate foile de cărți de lucru din folder în csv separat. Nu poate funcționa cu registrul de lucru curent.
Sub WorkbooksSaveAsCsvToFolder()

'UpdatebyExtendoffice20220520

Dim xObjWB As Workbook

Dim xObjWS As Worksheet

Dim xStrEFPath As String

Dim xStrEFFile As String

Dim xObjFD As FileDialog

Dim xObjSFD As FileDialog

Dim xStrSPath As String

Dim xStrCSVFName As String

Dim xWSh As Worksheet

    Application.ScreenUpdating = False

    Application.EnableEvents = False

    Application.Calculation = xlCalculationManual

    On Error Resume Next

Set xObjFD = Application.FileDialog(msoFileDialogFolderPicker)

    xObjFD.AllowMultiSelect = False

    xObjFD.Title = "Kutools for Excel - Select a folder which contains Excel files"

    If xObjFD.Show <> -1 Then Exit Sub

    xStrEFPath = xObjFD.SelectedItems(1) & "\"

    Set xObjSFD = Application.FileDialog(msoFileDialogFolderPicker)

    xObjSFD.AllowMultiSelect = False

    xObjSFD.Title = "Kutools for Excel - Select a folder to locate CSV Files "

    If xObjSFD.Show <> -1 Then Exit Sub

    xStrSPath = xObjSFD.SelectedItems(1) & "\"

    xStrEFFile = Dir(xStrEFPath & "*.xls*")

    Do While xStrEFFile <> ""

        Set xObjWB = Workbooks.Open(Filename:=xStrEFPath & xStrEFFile)

        For Each xWSh In xObjWB.Worksheets

            xWSh.Activate

            xStrCSVFName = xStrSPath & Left(xStrEFFile, InStr(1, xStrEFFile, ".") - 1) & "_" & xWSh.Name & ".csv"

            xObjWB.SaveAs Filename:=xStrCSVFName, FileFormat:=xlCSV

        Next

        xStrCSVFName = xStrSPath & Left(xStrEFFile, InStr(1, xStrEFFile, ".") - 1) & ".csv"

        xObjWB.SaveAs Filename:=xStrCSVFName, FileFormat:=xlCSV

        xObjWB.Close savechanges:=False

        xStrEFFile = Dir

  Loop

    Application.Calculation = xlCalculationAutomatic

    Application.EnableEvents = True

    Application.ScreenUpdating = True

End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună Sunny
Cu orice modificare în același cod, pot extrage doar o singură foaie de lucru cu același nume de foaie din toate fișierele?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Prashant, nu am înțeles clar întrebarea ta. Lasă-mă să ghicesc: dacă există două caiete de lucru numite book1 și book2, ambele conțin o foaie numită sheet1, vrei doar să obții o foaie (sheet1) din aceste două registre de lucru, iar cealaltă sheet1 nu trebuie extrasă?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Nu am reușit să fac asta să funcționeze pentru fișierele mele xls. Sunt foi de lucru 97-03 și în prezent rulez cea mai activă versiune Microsoft 365. Când rulez codul, folderul apare ca gol
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut, imi pare rau ca problema ta nu reapare in versiunea mea, habar n-am sa te ajut.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Aceeasi problema cu mine. Se rulează cel mai recent Office 365, dar nu se întâmplă nimic după setarea celor două casete de dialog de foldere.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Doc SJ, mulțumesc pentru memento, am verificat codul VBA, are unele probleme în Office 365, acum am actualizat VBA, vă rugăm să încercați din nou.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bom Dia!!

muito top esse codigo, porem estou com o problema abaixo

Tem como salvar em format "CSV (separado por vírgulas) (*.csv)", pois ao executar esse code my files files ficam com "," no format that eu precis eles não ficam com essa vírgula
Acest comentariu a fost redus la minimum de moderatorul de pe site
2019버전입니다.
게시글 그대로 실행해봤지만 아무것도 일어나지 않았습니다 ..
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, MAI, am testat VBA în Professional Plus Excel 2019, funcționează fără probleme și corect. Ar trebui să-mi oferiți mai multe detalii despre fișierele dvs., cum ar fi versiunea detaliată, conținutul fișierelor pe care doriți să le convertiți?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Salut, cum pot schimba delimitatorul?
În scriptul de mai sus, delimitatorul este virgulă (,).
Mulțumesc: D
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună,
Mă confrunt cu unele probleme când folosesc scriptul
Cum pot schimba delimitatorul din script, deoarece delimitatorul din ieșirea csv este în virgulă (,)
Am nevoie de delimitator nu în virgulă, deoarece seturile mele de date constau în multe virgule.


mulțumesc
Acest comentariu a fost redus la minimum de moderatorul de pe site
Adăugați Local:=True à această linie:
xObjWB.SaveAs Filename:=xStrCSVFName, FileFormat:=xlCSV, Local:=True

Permet de prendre le séparateur de votre système, moi c'est point-virgule ;
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua,

Vor einem Jahr habe ich den VBA-Code ohne Probleme ausgeführt. Heute wollte ich es nochmal versuchen, leider gibt es einen Laufzeitfehler 1004 mit dem Hinweis
"Die Methode 'Calculation' ist für Objekt '_Application' fehlgeschlagen."

Debuggen verweist auf folgende Zeile:
Application.Calculation = xlCalculationManual

Poate cineva să ajute?

LG, Max
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună ziua,

ich habe den VBA-Code vor einem Jahr ohne Probleme angewendet. Jetzt funktioniert es nicht mehr.
Es gibt einen Laufzeitfehler 1004 mit dem Hinweis: "Die Methode 'calculation' für das Objekt '_Application' ist fehlgeschlagen."

Debuggen verweist auf die Zeile "Application.Calculation = xlCalculationManual".

Ich würde mich sehr freuen, wenn jemand weiterhelfen könnte.

LG, Max
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, Gast, vă rugăm să verificați dacă codul pe care l-ați copiat este corect în primul rând, nu există „_” în cod. Dacă ați verificat că tot codul este corect, puteți elimina linia de cod
Application.Calculation = xlCalculationManual apoi încercați din nou. Vă rugăm să rețineți că în cod există două linii Application.Calculation = xlCalculationManual.
Nu există comentarii postate aici încă
Încărcați mai
Lăsa comentarii
Postare ca invitat
×
Evaluează această postare:
0   Caractere
Locații sugerate

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