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

Hur batchkonverterar man flera Excel-filer till CSV-filer i Excel?

I Excel kan vi konvertera arbetsboken till CSV-fil med funktionen Spara som, men kan du veta hur du ska konvertera flera Excel-filer till separata CSV-filer? I den här artikeln introducerar jag en VBA-kod för att konvertera alla Excel-filer i en mapp till CSV-filer i Excel.

Batchkonvertera Excel-filer i en mapp till CSV-filer med VBA

Konvertera arbetsbok till separata CSV-filer med Kutools för Excelbra idé3


Batchkonvertera Excel-filer i en mapp till CSV-filer med VBA

I Excel finns det ingen inbyggd funktion som snabbt kan lösa detta jobb förutom VBA.

1. Aktivera Excel och tryck på Alt + F11 nycklarna öppna Microsoft Visual Basic för applikationer fönster.

2. klick Insert > Modulerna för att skapa en ny modul.

3. Kopiera nedanstående kod och klistra in dem i det nya modulfönstret.

VBA: Batchkonvertera Excel-filer till 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. Tryck F5 välj mappen som innehåller de Excel-filer som du vill konvertera till CSV-filer i den första poppdialogen.
doc-batch till csv 1

5. klick OK, sedan i den andra poppande dialogrutan, välj mappen för att placera CSV-filer.
doc-batch till csv 2

6. klick OK, nu har Excel-filerna i mappen konverterats till CSV-filer och sparats i en annan mapp.
doc-batch till csv 3


Konvertera arbetsbok till separata CSV-filer med Kutools för Excel

Som vi visste kan vi bara konvertera hela arbetsboken till en CSV-fil i Excel med funktionen Spara som. Men ibland vill du konvertera det ena arket till CSV-fil, i det här fallet Dela arbetsbok nytta av Kutools för Excel kan hjälpa dig.

Kutools för Excel, med mer än 300 praktiska funktioner, gör dina jobb enklare. 

När du har installerat Kutools för Excel, gör så här:(Gratis nedladdning Kutools för Excel nu!)

1. Aktivera arbetsbok du vill konvertera dess ark som separata CSV-filer, klicka på Kutools Plus > Arbetsbok > Dela arbetsbok.
doc-batch till csv 4

2. I Dela arbetsbok dialogrutan, kolla arkenamnet du vill dela (alla ark är markerade som standard), kontrollera Spara som typ, välj CSV (Macintosh) (* .CSV) från rullgardinsmenyn.
doc-batch till csv 5

3. klick Split att poppa ut a Bläddra för mapp välj eller skapa en mapp för att placera CSV-filerna.
doc-batch till csv 6

4. klick OK, nu har arbetsboken delats upp som separata CSV-filer.
doc-batch till csv 7


De bästa Office-produktivitetsverktygen

Kutools för Excel löser de flesta av dina problem och ökar din produktivitet med 80%

  • återanvändning: Sätt snabbt i komplexa formler, diagram och allt som du har använt tidigare; Kryptera celler med lösenord; Skapa e-postlista och skicka e-post ...
  • Super Formula Bar (enkelt redigera flera rader med text och formel); Läslayout (enkelt läsa och redigera ett stort antal celler); Klistra in i filtrerat intervall...
  • Sammanfoga celler / rader / kolumner utan att förlora data; Delat cellinnehåll; Kombinera duplicerade rader / kolumner... Förhindra duplicerade celler; Jämför intervall...
  • Välj Duplicera eller Unikt Rader; Välj tomma rader (alla celler är tomma); Super Find och Fuzzy Find i många arbetsböcker; Slumpmässigt val ...
  • Exakt kopia Flera celler utan att ändra formelreferens; Skapa referenser automatiskt till flera ark; Sätt in kulor, Kryssrutor och mer ...
  • Extrahera text, Lägg till text, ta bort efter position, Ta bort mellanslag; Skapa och skriva ut personsökningstalsatser; Konvertera mellan celler innehåll och kommentarer...
  • Superfilter (spara och tillämpa filterscheman på andra ark); Avancerad sortering efter månad / vecka / dag, frekvens och mer; Specialfilter av fet, kursiv ...
  • Kombinera arbetsböcker och arbetsblad; Sammanfoga tabeller baserat på nyckelkolumner; Dela data i flera ark; Batchkonvertera xls, xlsx och PDF...
  • Mer än 300 kraftfulla funktioner. Stöder Office / Excel 2007-2021 och 365. Stöder alla språk. Enkel implementering i ditt företag eller organisation. Fullständiga funktioner 30 dagars gratis provperiod. 60 dagars pengarna tillbaka-garanti.
kte-flik 201905

Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare

  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
officetab botten
Sortera kommentarer efter
Kommentarer (36)
Inga betyg än. Bli först med att betygsätta!
Denna kommentar minimerades av moderatoren på webbplatsen
Ty det fungerar verkligen älskling!!
Denna kommentar minimerades av moderatoren på webbplatsen
Fungerar utmärkt, tack för koden!
Min enda anmärkning skulle vara att den här koden skär av filnamn när det finns ett "." i själva filnamnet (t.ex. file.123.csv förvandlas till file.csv).
Denna kommentar minimerades av moderatoren på webbplatsen
Har du hittat en väg kring detta problem?
Denna kommentar minimerades av moderatoren på webbplatsen
Carol,

På rad 33 har jag ersatt denna kod:

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

Med den här koden:

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

Observera att om du använder något annat Excel-tillägg (.xls, .xlsm, etc.) bör du ändra det som sådant :)
Denna kommentar minimerades av moderatoren på webbplatsen
Tack så mycket! Detta har sparat mig så mycket tid!!
Denna kommentar minimerades av moderatoren på webbplatsen
En annan liten kommentar:

Om cellerna i de ursprungliga Excel-filerna alla är formaterade som "Allmänt" förloras viss noggrannhet när filen sparas som en CSV
Till exempel, om ett cellvärde i Excel är 0.123456789123456, kommer värdet i CSV:en att vara 0.123456789 (återstående decimaler saknas), så länge som cellen var formaterad som "Allmänt". Detta kan lösas genom att formatera alla celler i Excel-filen till något annat än 'Allmänt' (till exempel 'Text'). I så fall kommer CSV:en fortfarande att ha alla detaljer/noggrannhet. Dvs värdena i Excel-filerna kommer att vara helt intakta efter att ha sparats som CSV.

Hur kan det här makrot ändras, så det ställer in formateringen av alla celler i Excel-filen till "Text", innan det sparas som en CSV?
Jag föreställer mig att det på något sätt måste använda följande, men jag kan inte ta reda på hur jag korrekt ska inkludera i makrot:

Cells.Select
Selection.NumberFormat = "@"
Denna kommentar minimerades av moderatoren på webbplatsen
Tack för att du delar. Jag försöker spara ut flera xls-filer som innehåller ett unikt värde, vilket ger en prompt som frågar ja eller nej innan jag sparar. Uppmaningen lyder..

"Vissa funktioner i din arbetsbok kan gå förlorade om du sparar den som en CSV (kommaavgränsad). Vill du fortsätta använda det formatet?"

Skulle någon veta var man kan lägga till koden för att svara ja på denna uppmaning?
Denna kommentar minimerades av moderatoren på webbplatsen
Jag tycker att det är värt att lägga till bättre felhantering för filer med specialtecken, för närvarande ignoreras de helt enkelt.
Denna kommentar minimerades av moderatoren på webbplatsen
toppen tack :)
Denna kommentar minimerades av moderatoren på webbplatsen
Det här är otroligt. Tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, finns det en snabb ändring av koden som skulle tillåta mig att byta från en CSV UTF-8 (kommaavgränsad) till bara CSV (kommaavgränsad)? Jag försökte den första metoden och var hoppfull men det verkar som om det inte kommer att ändra dem eftersom de redan finns i någon form av CSV. Kanske finns det en lättare process men jag kan inte hitta något. Jag måste konvertera kanske 150 filer som sparats i det här formatet och jag vill inte öppna varje fil och spara som om jag kan undvika det. All hjälp uppskattas!
Denna kommentar minimerades av moderatoren på webbplatsen
Så efter att ha granskat koden lite närmare såg jag var den ursprungliga filtypen måste vara .xls. Så att ersätta med .csv har löst problemet.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,
das Makro fungerar helt gut, aber bei mir kommt, när jag är som filnamn:xlCSVUTF8 en annan formatering CSV raus als ich über speichern unter -> csv(utf8) erreiche!
Denna kommentar minimerades av moderatoren på webbplatsen
xObjWB.SaveAs Filnamn:=xStrCSVFName, FileFormat:=xlCSVUTF8
Denna kommentar minimerades av moderatoren på webbplatsen
also er schreibt die verschiedenen Spalten alle in eine Spalte, dass müsste der Fehler sein ?!
Denna kommentar minimerades av moderatoren på webbplatsen
hej.. i vissa excel-filer som ska konverteras till csv finns det en nominell som måste avrundas, vad är lösningen? tack
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, Sam, det finns ingen lösning för att lösa detta problem förutom att formatera data som text innan filen konverteras till csv.
Denna kommentar minimerades av moderatoren på webbplatsen
När jag körde detta konverterade det bara det första kalkylbladet och ignorerade ytterligare ark i arbetsboken. Finns det något sätt att redigera koden för att inkludera ytterligare ark?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, du kan prova nedanstående kod, det kommer att spara alla ark med arbetsböcker i mappen till csv separat. Det kan inte fungera med den aktuella arbetsboken.
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
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Sunny
Med någon ändring i samma kod kan jag bara extrahera ett kalkylblad med samma arknamn i alla filer?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Prashant, jag förstod inte din fråga tydligt. Låt mig gissa: om det finns två arbetsböcker som heter bok1 och bok2, båda innehåller ett ark med namnet ark1, vill du bara få ett ark (ark1) från dessa två arbetsböcker, och det andra arket1 behöver inte extraheras?
Denna kommentar minimerades av moderatoren på webbplatsen
Har inte lyckats få detta att fungera för mina xls-filer. De är 97-03 kalkylblad och jag kör för närvarande den mest aktiva versionen av Microsoft 365. När jag kör koden kommer mappen upp som tom
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, jag är ledsen att ditt problem inte dyker upp igen i min version, jag har ingen aning om att hjälpa dig.
Denna kommentar minimerades av moderatoren på webbplatsen
Samma problem med mig. Kör senaste office 365 men ingenting händer efter att ha ställt in dialogrutorna för två mappar.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, Doc SJ, tack för din påminnelse, jag har kontrollerat VBA-koden, den har några problem i Office 365, nu har jag uppdaterat VBA, försök igen.
Denna kommentar minimerades av moderatoren på webbplatsen
Bom Dia!!

muito top esse codigo, porem estou com o problema abaixo

Tem como salvar em formato "CSV (separado por vírgulas) (*.csv)", pois ao executar esse código meus arquivos ficam com "," no formato que eu preciso eles não ficam com essa vírgula
Denna kommentar minimerades av moderatoren på webbplatsen
2019버전입니다.
게시글 그대로 실행해봤지만 아무것도 일어나지 않았습니다 ..
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, YOY, jag har testat VBA i Professional Plus Excel 2019, det fungerar smidigt och korrekt. Ska du ge mig mer information om dina filer, såsom detaljerad version, innehållet i filer du vill konvertera?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, Hur kan jag ändra avgränsaren?
I skriptet ovan är avgränsaren komma (,).
Tack: D
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,
Jag stöter på några problem när jag använder skriptet
Hur kan jag ändra avgränsaren i skriptet eftersom avgränsaren i csv-utgången är i kommatecken (,)
Jag behöver inte avgränsaren med kommatecken eftersom mina datauppsättningar består av många kommatecken.


Tack
Denna kommentar minimerades av moderatoren på webbplatsen
Ajouter Local:=True à cette ligne:
xObjWB.SaveAs Filnamn:=xStrCSVFName, FileFormat:=xlCSV, Local:=True

Permet de prendre le séparateur de votre système, moi c'est point-virgule ;
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,

vor einem Jahr har ich den VBA-koden 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 på följande Zeile:
Application.Calculation = xlCalculationManual

Kann jemand weiterhelfen?

LG, Max
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,

Jag har VBA-koden för ett problem. 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
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, Gast, kolla först om koden du kopierade är korrekt, det finns inget "_" i koden. Om du har kontrollerat att all kod är korrekt kan du ta bort kodraden
Application.Calculation = xlCalculationManual och försök sedan igen. Observera att det finns två rader Application.Calculation = xlCalculationManual i koden.
Det finns inga kommentarer här ännu
Ladda fler
Lämna dina kommentarer
Postar som gäst
×
Betygsätt detta inlägg:
0   Tecken
Föreslagna platser

Följ oss

Copyright © 2009 - www.extendoffice.com. | Alla rättigheter förbehållna. Drivs av ExtendOffice. | | Sitemap
Microsoft och Office-logotypen är varumärken eller registrerade varumärken som tillhör Microsoft Corporation i USA och / eller andra länder.
Skyddad av Sectigo SSL