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

Jak hromadně převádět více souborů aplikace Excel do souborů CSV v aplikaci Excel?

V aplikaci Excel můžeme převést sešit na soubor CSV pomocí funkce Uložit jako, ale víte, jak hromadně převádět více souborů aplikace Excel do samostatných souborů CSV? V tomto článku představuji kód VBA pro dávkový převod všech souborů Excel ve složce na soubory CSV v aplikaci Excel.

Dávkový převod souborů Excel složky do souborů CSV pomocí VBA

Převádějte listy sešitu do samostatných souborů CSV pomocí programu Kutools pro Exceldobrý nápad3


Dávkový převod souborů Excel složky do souborů CSV pomocí VBA

V aplikaci Excel neexistuje žádná vestavěná funkce, která by mohla tuto úlohu rychle vyřešit, kromě VBA.

1. Povolte Excel a stiskněte Alt + F11 klíče otevřené Microsoft Visual Basic pro aplikace okno.

2. cvaknutí Vložit > Modul k vytvoření nového modulu.

3. Zkopírujte níže uvedený kód a vložte je do nového okna modulu.

VBA: Dávkový převod souborů Excel do formátu 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. lis F5 klíč, vyberte složku obsahující soubory aplikace Excel, které chcete převést na soubory CSV, v prvním vyskakovacím dialogovém okně.
dávková dokumentace do CSV 1

5. cvaknutí OK, pak ve druhém vyskakovacím dialogovém okně vyberte složku, do které chcete umístit soubory CSV.
dávková dokumentace do CSV 2

6. cvaknutí OK, nyní byly soubory aplikace Excel ve složce převedeny na soubory CSV a uloženy do jiné složky.
dávková dokumentace do CSV 3


Převádějte listy sešitu do samostatných souborů CSV pomocí programu Kutools pro Excel

Jak jsme věděli, můžeme celý sešit převést pouze do jednoho souboru CSV v aplikaci Excel pomocí funkce Uložit jako. Ale v některých případech chcete převést jeden list do souboru CSV, v tomto případě Rozdělit sešit užitečnost Kutools pro Excel vám může pomoci.

Kutools pro Excel, s více než 300 užitečné funkce, které vám usnadní práci. 

Po instalaci Kutools pro Excel, prosím, postupujte takto:(Zdarma ke stažení Kutools pro Excel nyní!)

1. Povolte sešit, který chcete převést na jeho listy jako samostatné soubory CSV, klepněte na Kutools Plus > Cvičebnice > Rozdělit sešit.
dávková dokumentace do CSV 4

2. V Rozdělit sešit v dialogu zaškrtněte název listu, který chcete rozdělit (ve výchozím nastavení jsou zaškrtnuty všechny listy), zaškrtněte Uložit jako typ, vyberte CSV (Macintosh) (* .CSV) z rozevíracího seznamu.
dávková dokumentace do CSV 5

3. cvaknutí Rozdělit vyskočit a Procházet složku V dialogovém okně vyberte nebo vytvořte složku pro umístění souborů CSV.
dávková dokumentace do CSV 6

4. cvaknutí OK, sešit byl nyní rozdělen jako samostatné soubory CSV.
dávková dokumentace do CSV 7


Nejlepší kancelářské nástroje produktivity

Kutools pro Excel řeší většinu vašich problémů a zvyšuje vaši produktivitu o 80%

  • Opakované použití: Rychle vložte složité vzorce, grafy a cokoli, co jste dříve používali; Šifrovat buňky s heslem; Vytvořte seznam adresátů a posílat e-maily ...
  • Super Formula Bar (snadno upravit více řádků textu a vzorce); Rozložení pro čtení (snadno číst a upravovat velké množství buněk); Vložit do filtrovaného rozsahu...
  • Sloučit buňky / řádky / sloupce bez ztráty dat; Rozdělit obsah buněk; Zkombinujte duplicitní řádky / sloupce... Zabraňte duplicitním buňkám; Porovnat rozsahy...
  • Vyberte možnost Duplikovat nebo Jedinečný Řádky; Vyberte prázdné řádky (všechny buňky jsou prázdné); Super hledání a fuzzy hledání v mnoha sešitech; Náhodný výběr ...
  • Přesná kopie Více buněk beze změny odkazu na vzorec; Automaticky vytvářet reference do více listů; Vložte odrážky, Zaškrtávací políčka a další ...
  • Extrahujte text, Přidat text, Odebrat podle pozice, Odebrat mezeru; Vytváření a tisk mezisoučtů stránkování; Převod mezi obsahem buněk a komentáři...
  • Super filtr (uložit a použít schémata filtrů na jiné listy); Rozšířené řazení podle měsíce / týdne / dne, frekvence a dalších; Speciální filtr tučnou kurzívou ...
  • Kombinujte sešity a pracovní listy; Sloučit tabulky na základě klíčových sloupců; Rozdělte data do více listů; Dávkový převod xls, xlsx a PDF...
  • Více než 300 výkonných funkcí. Podporuje Office / Excel 2007-2019 a 365. Podporuje všechny jazyky. Snadné nasazení ve vašem podniku nebo organizaci. Kompletní funkce 30denní bezplatná zkušební verze. 60denní záruka vrácení peněz.
karta kte 201905

Office Tab přináší do Office rozhraní s kartami a usnadňuje vám práci

  • Povolte úpravy a čtení na kartách ve Wordu, Excelu, PowerPointu, Publisher, Access, Visio a Project.
  • Otevřete a vytvořte více dokumentů na nových kartách ve stejném okně, nikoli v nových oknech.
  • Zvyšuje vaši produktivitu o 50% a omezuje stovky kliknutí myší každý den!
officetab dno
Komentáře (33)
Zatím žádné hodnocení. Buďte první, kdo ohodnotí!
Tento komentář byl moderátorem webu minimalizován
Ty to opravdu funguje drahá!!
Tento komentář byl moderátorem webu minimalizován
Funguje skvěle, děkuji za kód!
Moje jediná poznámka by byla, že tento kód omezuje názvy souborů, když je tam "." v samotném názvu souboru (např. soubor.123.csv se změní na soubor.csv).
Tento komentář byl moderátorem webu minimalizován
Našli jste způsob, jak tento problém obejít?
Tento komentář byl moderátorem webu minimalizován
Koleda,

Na řádku 33 jsem nahradil tento kód:

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

S tímto kódem:

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

Všimněte si, že pokud používáte nějaké jiné rozšíření pro Excel (.xls, .xlsm atd.), měli byste to změnit :)
Tento komentář byl moderátorem webu minimalizován
Děkuji mnohokrát! To mi ušetřilo tolik času!!
Tento komentář byl moderátorem webu minimalizován
Ještě malá poznámka:

Pokud jsou buňky v původních souborech aplikace Excel všechny naformátovány jako „Obecné“, při uložení souboru jako CSV dojde ke ztrátě určité přesnosti.
Pokud je například hodnota buňky v aplikaci Excel 0.123456789123456, pak hodnota v CSV bude 0.123456789 (bez zbývajících desetinných míst), pokud byla buňka naformátována jako „Obecné“. To lze vyřešit formátováním všech buněk v souboru aplikace Excel na cokoli jiného než „Obecné“ (například „Text“). V takovém případě bude mít CSV *stále* úplné podrobnosti/přesnost. Hodnoty v souborech Excel budou po uložení jako CSV plně nedotčené.

Jak by se toto makro mohlo změnit, takže před uložením jako CSV nastaví formátování všech buněk v souboru aplikace Excel na „Text“?
Představuji si, že to musí nějak využít následující, ale nemohu přijít na to, jak správně zahrnout do makra:

Vyberte buňky
Selection.NumberFormat = "@"
Tento komentář byl moderátorem webu minimalizován
Děkuji za sdílení. Snažím se uložit více souborů xls, které obsahují jedinečnou hodnotu, a před uložením se zobrazí výzva s dotazem ano nebo ne. Výzva zní..

"Některé funkce v sešitu mohou být ztraceny, pokud jej uložíte jako CSV (oddělený čárkami). Chcete tento formát nadále používat?"

Věděl by někdo, kam přidat kód pro odpověď ano na tuto výzvu?
Tento komentář byl moderátorem webu minimalizován
Myslím, že stojí za to přidat lepší zpracování chyb pro soubory se speciálními znaky, v současnosti jsou prostě ignorovány.
Tento komentář byl moderátorem webu minimalizován
top díky :)
Tento komentář byl moderátorem webu minimalizován
To je úžasné. Děkuji!
Tento komentář byl moderátorem webu minimalizován
Dobrý den, existuje rychlá změna kódu, která by mi umožnila změnit z CSV UTF-8 (oddělený čárkou) na pouze CSV (oddělený čárkou)? Zkoušel jsem první metodu a doufal jsem, ale zdá se, že je to nezmění, protože už jsou v nějaké formě CSV. Možná existuje jednodušší postup, ale nemůžu nic najít. Musím převést snad 150 souborů, které byly uloženy v tomto formátu a nechci otevírat každý soubor a uložit jako, abych se tomu mohl vyhnout. Jakákoli pomoc je oceňována!
Tento komentář byl moderátorem webu minimalizován
Když jsem si tedy kód prohlédl trochu blíže, viděl jsem, kde počáteční typ souboru musel být .xls. Takže nahrazení .csv problém vyřešilo.
Tento komentář byl moderátorem webu minimalizován
Dobrý den,
das Makro funktioniert ganz gut, aber bei mir kommt, wenn ich als filename:xlCSVUTF8 eine anders formatierte CSV raus als jejich über speichern unter -> csv(utf8) erreiche!
Tento komentář byl moderátorem webu minimalizován
xObjWB.SaveAs Název souboru:=xStrCSVFName, Formát souboru:=xlCSVUTF8
Tento komentář byl moderátorem webu minimalizován
also er schreibt die verschiedenen Spalten alle in eine Spalte, dass müsste der Fehler sein ?!
Tento komentář byl moderátorem webu minimalizován
ahoj.. v některých excelových souborech, které budou převedeny na csv je nominální hodnota, která se musí zaokrouhlit, jaké je řešení? Děkuji
Tento komentář byl moderátorem webu minimalizován
Ahoj, Same, neexistuje žádné řešení, jak tento problém vyřešit, kromě formátování dat jako textu před převodem souboru na csv.
Tento komentář byl moderátorem webu minimalizován
Když jsem to spustil, převedl pouze první list a ignoroval další listy v sešitu. Existuje způsob, jak upravit kód tak, aby zahrnoval další listy?
Tento komentář byl moderátorem webu minimalizován
Ahoj, můžete zkusit níže uvedený kód, uloží všechny listy sešitů ve složce do csv samostatně. Nemůže fungovat aktuální sešit.
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
Tento komentář byl moderátorem webu minimalizován
Nepodařilo se mi to zprovoznit pro mé soubory xls. Jsou to pracovní listy 97-03 a aktuálně používám nejaktivnější verzi microsoft 365. Když spustím kód, složka se zobrazí jako prázdná
Tento komentář byl moderátorem webu minimalizován
Ahoj, je mi líto, že se tvůj problém v mé verzi znovu neobjevuje, nemám tušení, jak ti pomoci.
Tento komentář byl moderátorem webu minimalizován
Stejný problém se mnou. Spuštění nejnovější sady Office 365, ale po nastavení dvou dialogových oken složek se nic nestane.
Tento komentář byl moderátorem webu minimalizován
Ahoj, doktore SJ, děkuji za připomenutí, zkontroloval jsem kód VBA, má nějaké problémy v Office 365, nyní jsem aktualizoval VBA, zkuste to prosím znovu.
Tento komentář byl moderátorem webu minimalizován
Bom Dia!!

muito top esse codigo, porem estou com o problema abaixo

Tem co salvar em formato "CSV (separado por vírgulas) (*.csv)", pois ao executar esse código meus arquivos ficam com "," no formato que que eu preciso eles não ficam com essa vírgula
Tento komentář byl moderátorem webu minimalizován
2019버전입니다
게시글 그대로 실행해봤지만 아무것도 일어나지 않았습니다 ..
Tento komentář byl moderátorem webu minimalizován
Ahoj, YOY, testoval jsem VBA v Professional Plus Excel 2019, funguje to hladce a správně. Měli byste mi poskytnout více podrobností o vašich souborech, jako je podrobná verze, obsah souborů, které chcete převést?
Tento komentář byl moderátorem webu minimalizován
Dobrý den, jak mohu změnit oddělovač?
Ve výše uvedeném skriptu je oddělovač čárka (,).
Děkuji: D
Tento komentář byl moderátorem webu minimalizován
Dobrý den,
Při používání skriptu se potýkám s určitými problémy
Mohu změnit oddělovač ve skriptu, protože oddělovač ve výstupu csv je v čárce (,)
Potřebuji, aby oddělovač nebyl v čárce, protože moje datové sady se skládají z mnoha čárek.


Děkuji
Tento komentář byl moderátorem webu minimalizován
Lokální pomoc:=True à cette ligne:
xObjWB.SaveAs Název souboru:=xStrCSVFName, FileFormat:=xlCSV, Local:=True

Permet de prendre le séparateur de votre système, moi c'est point-virgule ;
Tento komentář byl moderátorem webu minimalizován
Dobrý den,

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' is für Objekt '_Application' fehlgeschlagen."

Debuggen verweist auf folgende Zeile:
Application.Calculation = xlCalculationManual

Může někdo pomoci?

LG, Max
Tento komentář byl moderátorem webu minimalizován
Dobrý den,

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

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

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

LG, Max
Tento komentář byl moderátorem webu minimalizován
Ahoj, Gaste, nejprve prosím zkontrolujte, zda je kód, který jste zkopírovali, správný, v kódu není žádné „_“. Pokud jste zkontrolovali, zda je veškerý kód správný, můžete řádek kódu odstranit
Application.Calculation = xlCalculationManual a zkuste to znovu. Všimněte si prosím, že v kódu jsou dva řádky Application.Calculation = xlCalculationManual.
Zatím zde nejsou žádné komentáře
Načíst další
Zanechat své připomínky
Odesílání jako host
×
Ohodnoťte tento příspěvek:
0   Postavy
Doporučená umístění