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

Hur batchkonverterar man flera CSV-filer till XLS (X) -filer i Excel?

Att konvertera en CSV-fil till XlS- eller XLSX-fil är mycket lätt för dig genom att använda funktionen Spara som. Att konvertera flera CSV-filer till XLS- eller XLSX-filer från en mapp är dock tidskrävande genom att spara en efter en manuellt. Här introducerar jag en makrokod för att snabbt batchkonvertera alla CSV-filer till XLS (x) -filer från en mapp.

Batchkonvertera CSV-filer till XlS (X) -filer med makrokod


Batchkonvertera CSV-filer till XlS (X) -filer med makrokod

För att konvertera flera CSV-filer från en mapp till XLS (X) -filer kan du göra nedanstående steg:

1. Aktivera en ny arbetsbok, tryck på Alt + F11 nycklar för att öppna Microsoft Visual Basic för applikationer och klicka Insert > Modulerna. Se skärmdump:
doc batch konvertera cvs xls 1

Anmärkningar: Se till att alla CSV-filer du vill konvertera är stängda.

2. Klistra sedan in under makrokoden i Modulerna och tryck på F5 för att köra koden.

VBA: Konvertera CSV till 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. I popup-dialogrutan väljer du den angivna mappen som innehåller CSV-filerna du vill konvertera. Se skärmdump:
doc batch konvertera cvs xls 2

4. klick OK, alla CSV-filer i den valda mappen har konverterats till XLS-filer i den.
doc batch konvertera cvs xls 3

Tips: Om du vill konvertera CSV-filer till XLSX-filer använder du nedan VBA-kod.

VBA: Konvertera CSV-filer till 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

konvertera eller exportera snabbt ett arkområde för att separera XLS / Word / PDF eller andra formatfiler på en gång

Normalt stöder Excel dig inte med ett alternativ att snabbt exportera eller spara ett intervall som en CSV- eller Excel-fil. Om du vill spara en rad data som en CSV eller arbetsbok i Excel kan du behöva använda ett VBA-makro för att göra detta eller kopiera intervallet till urklipp och klistra in det i en ny arbetsbok och sedan spara arbetsboken som CSV eller Arbetsbok. Kutools för Excel förstärker Excel med Exportera intervall till fil verktyg för Excel-användare som snabbt vill bearbeta följande åtgärder :  Klicka för 30-dagars gratis provperiod med alla funktioner!
doc exportera cellintervall till fil
 
Kutools för Excel: med mer än 300 praktiska Excel-tillägg, gratis att prova utan begränsningar i 30 dagar.

Relativa artiklar:


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 (38)
Inga betyg än. Bli först med att betygsätta!
Denna kommentar minimerades av moderatoren på webbplatsen
Jag vill göra tvärtom - konvertera XLS till CSV. fungerar det här skriptet?
Sub CSVtoXLS()
'Uppdatering avExtendoffice20170814
Dim xFd As FileDialog
Dim xSPath som sträng
Dim xXLSFile As String
Dim xWsheet As String
Application.DisplayAlerts = False
Application.StatusBar = Sant
xWsheet = ActiveWorkbook.Name
Ställ in xFd = Application.FileDialog(msoFileDialogFolderPicker)
xFd.Title = "Välj en mapp:"
Om xFd.Show = -1 Då
xSPath = xFd.SelectedItems(1)
annars
Exit Sub
End If
If Right(xSPath, 1) <> "\" Då xSPath = xSPath + "\"
xXLSFile = Dir(xSPath & "*.xls")
Gör medan xXLSFile <> ""
Application.StatusBar = "Konverterar: " & xXLSFile
Workbooks.Open Filename:=xSPath & xXLSFile
ActiveWorkbook.SaveAs Replace(xSPath & xXLSFile, ".xls", ".csv", vbTextCompare), xlNormal
ActiveWorkbook.Stäng
Windows(xWsheet).Aktivera
xXLSFile = Dir
loop
Application.StatusBar = Falskt
Application.DisplayAlerts = Sant
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Sub ConvertCSVToXlsx()



Dimma min fil som sträng

Dim oldfname As String, newfname As String

Dim arbetsfil

Dim mappnamn som sträng



Application.DisplayAlerts = False

Application.ScreenUpdating = False



' Fånga namn på aktuell fil

minfil = ActiveWorkbook.Name



' Ställ in mappnamnet att arbeta igenom

folderName = "D:\tmp\"



' Gå igenom alla CSV-filer i mappen

arbetsfil = Dir(mappnamn & "*.CSV")

Gör medan arbetsfil <> ""

' Öppna CSV-fil

Arbetsböcker. Öppna Filnamn:=mappnamn och arbetsfil

' Fånga namnet på den gamla CSV-filen

oldfname = ActiveWorkbook.FullName

' Konvertera till XLSX

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

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

ActiveWorkbook.Stäng

' Ta bort gammal CSV-fil

Döda oldfname

Windows(minfil).Aktivera

arbetsfil = Dir()

loop



Application.DisplayAlerts = Sant

Application.ScreenUpdating = True



End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
"Tips: Om du vill konvertera CSV-filer till XLXS-filer behöver du bara ändra .xls till .xlsx i makrot ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare)."

Jag försökte detta, och Excel kunde inte öppna de resulterande filerna. Jag fick följande meddelande: "Excel kan inte öppna filen 'filnamn.xlsx' eftersom filformatet eller filtillägget inte är giltigt. Kontrollera att filen inte har skadats och att filtillägget matchar filformatet."

Skriptet lyckades dock konvertera till .xls.
Denna kommentar minimerades av moderatoren på webbplatsen
Jag hittade inte det problemet innan, tack för din korrekta kommentar. Jag har rättat till tipset.
Denna kommentar minimerades av moderatoren på webbplatsen

Denna kommentar minimerades av moderatoren på webbplatsen
Tack så mycket för ditt utmärkta manus för CSV till XLS. Det är mycket mer användbart för mitt arbete
Denna kommentar minimerades av moderatoren på webbplatsen
Hej,

Ditt skript är bra men det konverterar inte csv:en separerad med semikolon. Kan du snälla lägga upp en lösning för dessa?

Tack
Denna kommentar minimerades av moderatoren på webbplatsen
Ursäkta, här har jag ingen lösning, du kanske kan ställa din fråga till vårt forum, någon annan kan hjälpa dig. https://www.extendoffice.com/forum.html
Denna kommentar minimerades av moderatoren på webbplatsen
jag kan vara sen jag fick precis problemet där jag behövde konvertera semikolon CSV-filerna och jag la till detta till koden och det fungerade hoppas att det här kommer att hjälpa någon

Ändra 'Workbooks.Open Filename:=xSPath & xCSVFile' Genom detta 'Workbooks.Open Filename:=xSPath & xCSVFile, Delimiter:=";", Local:=True'
Denna kommentar minimerades av moderatoren på webbplatsen
Jag använde filen multipla csv till flera xls men får fel xls de csv-filer har ; separerad information men blir samman i celler. Hur kan detta lösas?
Denna kommentar minimerades av moderatoren på webbplatsen
Koden kan inte stödja den separerade komma-csv-filen.
Denna kommentar minimerades av moderatoren på webbplatsen
När jag gav mappnamnet sa programmet: "Inga filer matchar din sökning." Men det finns 2,609 XNUMX .csv-filer i mappen
Denna kommentar minimerades av moderatoren på webbplatsen
Koden stöder inte den separerade komma-csv-filen, är dina filer i det här fallet?
Denna kommentar minimerades av moderatoren på webbplatsen
Hallå,

en bra artikel - tack! Fungerar nästan för mig.

Här är problemet: Jag har en röravgränsad csv-fil. Jag har ändrat standardfönsteravgränsaren (via kontrollpanelen/regionala inställningar) till "|". Så när jag öppnar csv-filen med Excel öppnas den, läser och analyserar fälten direkt till kolumner korrekt. Allt jag behöver göra är att spara som xls eller xlsx, klart. När jag tittar på din kod borde det vara vad koden gör: Den öppnar csv-filerna i en mapp, sparar dem som xls eller xlsx och går över det.

Här är problemet: När jag öppnar de där Excel-filerna finns röravgränsare fortfarande där, ingenting tolkas till kolumnerna. Detta var beteendet som innan min ändring till den röravgränsade standardinställningen i Windows-inställningarna. Så det verkar som att Excel inte använder dessa Windows-inställningar. Jag verifierade detta genom att ersätta röravgränsare med kommaavgränsare i en kopia av filen - av de två filerna förblev den röravgränsade oparerad, den kommaavgränsade konverterades bra.

Någon idé om var den där Excel-inbyggda kommaavgränsningen kan hittas eller ändras, eller om det finns ett sätt i koden att göra det? Jag skulle föredra att INTE behöva göra en sökning och ersätta, sedan spara...

Tack, HC
Denna kommentar minimerades av moderatoren på webbplatsen
Om du vill dela upp data i kolumner baserat på röravgränsaren i Excel, använd bara funktionen Text till kolumner för att dela data med / efter att csv-filerna har täckts till xls.
Denna kommentar minimerades av moderatoren på webbplatsen
Gör inte riktigt koden användbar för Excel-filer.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, bra manus som fungerade för mig efter att ha provat alla andra manus som finns på Google. Jag har lagt till några rader till som utför texten till kolumnoperationen som jag vill ha. Kan någon hjälpa mig hur man ändrar skriptet genom att ange mappplatsen på den lokala enheten istället för att öppna dialogrutan eftersom jag faktiskt automatiserar systemet
. Tack på förhand
Denna kommentar minimerades av moderatoren på webbplatsen
Hi
Kan du dela skriptet som utför texten till kolumner??
Med vänliga hälsningar
Denna kommentar minimerades av moderatoren på webbplatsen
Bra skript efter att ha sökt i alla andra skript som finns på Google. Kan någon hjälpa hur man ändrar det här skriptet genom att ange en mappplats på den lokala enheten istället för att låta den öppna dialogrutan eftersom jag faktiskt automatiserar systemet. Tack på förhand
Denna kommentar minimerades av moderatoren på webbplatsen
Cool bit kod. Mycket användbart. Om jag inte har fel ser koden för .xlsx ut som .xls-koden.

Denna rad:
ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare), xlWorkbookDefault

Jag antar att det ska vara: ".csv" , ".xlsx", vbTextCompare etc.
Denna kommentar minimerades av moderatoren på webbplatsen
Jag har ändrat koden så, beskrivet ovan; nu fungerar skriptet som förväntat: det genererar xlsx-filer
Denna kommentar minimerades av moderatoren på webbplatsen
nej det har du inte. det står fortfarande xls i båda versionerna.
Denna kommentar minimerades av moderatoren på webbplatsen
detta makro visar inte min csv-fil
Denna kommentar minimerades av moderatoren på webbplatsen
Ett litet problem med den här koden är att viss noggrannhet (antal decimaler) kan gå förlorad när du öppnar en csv och sparar den som xlsx.
Sättet att förhindra detta är att markera alla celler direkt efter öppning, ställa in antalet decimaler till önskat antal (15 för mig personligen) och *sedan* spara som xlsx

Annars har xlsx mindre detaljer (mindre noggrannhet i termer av decimaler) än den ursprungliga csv, vilket kan leda till problem i vissa applikationer
Denna kommentar minimerades av moderatoren på webbplatsen
det ändrar mitt datumkolumnsformat från dd-mm-åååå till dd/mm/åååå, snälla kan någon hjälpa till med hur man förhindrar detta skript från att ändra kolumnformat.
Tack så mycket.
Denna kommentar minimerades av moderatoren på webbplatsen
Hej, huggorm, efter konvertering kan du formatera tillbaka dem, välja datum och högerklicka för att välja Formatera celler från snabbmenyn, i dialogrutan Formatera celler, under fliken Nummer, klicka på Anpassad i kategorilistan, skriv sedan mm-dd- yyyy i textrutan i högra avsnittet. Eller om du har Kutools för Excel, använd Apply Date Formatting för att ändra datumformatet som du behöver.
Denna kommentar minimerades av moderatoren på webbplatsen
bra artikel. Hur kan jag spara alla konverterade filer på en ny plats? Kan du uppdatera koden och skicka den till mig. Som att låta användaren välja sin målmapp.


Tack
Denna kommentar minimerades av moderatoren på webbplatsen
Du har ett fel på rad 22 i csv till xlsx
Med fel - ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare), xlWorkbookDefault
Korrigerad - ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xslx", vbTextCompare), xlWorkbookDefault
Denna kommentar minimerades av moderatoren på webbplatsen
Tack för din påminnelse, jag har uppdaterat den, tack igen.
Denna kommentar minimerades av moderatoren på webbplatsen
Jag får ett felmeddelande "Objektvariabel eller med blockvariabel ej inställd" för denna rad:
xFd.Title = "/Users/[mitt.namn]/Documents/[myFolder]" >> detta är sökvägen till en viss mapp på min dator där jag gör omvandlingen (mappen har ett gäng csv-filer inuti )

Gör jag något fel här?
Denna kommentar minimerades av moderatoren på webbplatsen
Det här fungerar för mig, men filtillägget ändras inte. Några tips?
Denna kommentar minimerades av moderatoren på webbplatsen
Samma för mig -- alla filer förblir .csv.
Denna kommentar minimerades av moderatoren på webbplatsen
Alla csv-filer du väljer har sparats som nya excel-filer, originalfilerna (csv) ändras inte, det finns nya excel-filer med samma innehåll.
Denna kommentar minimerades av moderatoren på webbplatsen
Jag hade samma problem. Om din källfil har en extension i versaler (.CSV) fungerar den inte. Byt bara ut .csv till .CSV i koden på rad 22 och då borde det fungera. Nåväl, åtminstone för mig gjorde det det.
Denna kommentar minimerades av moderatoren på webbplatsen
Hur skulle jag infoga kod i XLSX batchfilrutinen för att semikolon separera data i separata kolumner? Den delade koden konverterar filen från en .csv till en .xlsx, men den separerar inte data i separata kolumner.
Denna kommentar minimerades av moderatoren på webbplatsen
ja det fungerar inte.
Denna kommentar minimerades av moderatoren på webbplatsen
Buenos dias compañeros

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 separado 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, inklusive usando la opción de "USAR REFERENCIAS RELATIVAS", no hace el processo 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 decirera, cavo siiarchi y le hiciera manualmente la opción delimitación y no aplique los valores de ubicación de las columnas identificados en el archivo ejemplo.

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


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").Välj
ActiveWorkbook.Save

HASTA AQUI HÅLLER MED YO

ActiveWorkbook.Stäng
Windows(xWsheet).Aktivera
xCSVFile = Dir

loop
Application.StatusBar = Falskt
Application.DisplayAlerts = Sant
End Sub

No se si me hago explicar bien, pero es my problema.
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