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

Hvordan batchkonverteres flere CSV-filer til XLS (X) -filer i Excel?

At konvertere en CSV-fil til XlS- eller XLSX-fil er meget let for dig ved at anvende funktionen Gem som. At konvertere flere CSV-filer til XLS- eller XLSX-filer fra en mappe er dog tidskrævende ved at gemme en efter en manuelt. Her introducerer jeg en makrokode til hurtig batchkonvertering af alle CSV-filer til XLS (x) -filer fra en mappe.

Batch konvertere CSV-filer til XlS (X) filer med makro kode


Batch konvertere CSV-filer til XlS (X) filer med makro kode

For at konvertere flere CSV-filer fra en mappe til XLS (X) -filer kan du gøre som nedenfor:

1. Aktivér en ny projektmappe, tryk på Alt + F11 taster for at åbne Microsoft Visual Basic til applikationer vindue og klik indsatte > Moduler. Se skærmbillede:
doc batch konvertere cvs xls 1

Bemærk: Sørg for, at alle CSV-filer, du vil konvertere, er lukket.

2. Indsæt derefter makrokoden under Moduler script, og tryk på F5 nøgle for at køre koden.

VBA: Konverter CSV til 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 pop op-dialogboksen skal du vælge den angivne mappe, der indeholder de CSV-filer, du vil konvertere. Se skærmbillede:
doc batch konvertere cvs xls 2

4. klik OK, alle CSV-filer i den valgte mappe er konverteret til XLS-filer i den.
doc batch konvertere cvs xls 3

Tip: Hvis du vil konvertere CSV-filer til XLSX-filer, skal du bruge nedenstående VBA-kode.

VBA: Konverter CSV-filer til 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

hurtigt konvertere eller eksportere en række af et ark for at adskille XLS / Word / PDF eller andre formatfiler på én gang

Normalt understøtter Excel dig ikke en mulighed for hurtigt at eksportere eller gemme et interval som en CSV- eller Excel-fil. Hvis du vil gemme en række data som en CSV eller projektmappe i Excel, skal du muligvis bruge en VBA-makro til at gøre dette eller kopiere området til udklipsholderen og indsætte det i en ny projektmappe og derefter gemme projektmappen som CSV eller Arbejdsbog. Kutools til Excel udvider Excel med Eksporter rækkevidde til fil værktøj til Excel-brugere, der hurtigt vil behandle følgende operationer :  Klik for 30-dag fuld featured gratis prøveperiode!
doc eksport celleområde til fil
 
Kutools til Excel: med mere end 300 praktiske Excel-tilføjelser, gratis at prøve uden begrænsning i 30 dage.

Relative artikler:


De bedste Office-produktivitetsværktøjer

Kutools til Excel løser de fleste af dine problemer og øger din produktivitet med 80%

  • Genbruge: Indsæt hurtigt komplekse formler, diagrammer og alt, hvad du har brugt før; Krypter celler med adgangskode Opret postliste og send e-mails ...
  • Super formel bar (let redigere flere linjer med tekst og formel); Læsning Layout (let at læse og redigere et stort antal celler); Indsæt til filtreret rækkevidde...
  • Flet celler / rækker / kolonner uden at miste data; Split celler indhold; Kombiner duplikerede rækker / kolonner... Forhindre duplikerede celler; Sammenlign områder...
  • Vælg Duplicate eller Unique Rækker; Vælg tomme rækker (alle celler er tomme); Super Find og Fuzzy Find i mange arbejdsbøger; Tilfældig valg ...
  • Præcis kopi Flere celler uden at ændre formelreference; Auto Opret referencer til flere ark; Indsæt kugler, Afkrydsningsfelter og mere ...
  • Uddrag tekst, Tilføj tekst, Fjern efter position, Fjern mellemrum; Opret og udskriv personsøgningssubtotaler; Konverter mellem celler indhold og kommentarer...
  • Superfilter (gem og anvend filterskemaer på andre ark); Avanceret sortering efter måned / uge / dag, hyppighed og mere; Specielt filter af fed, kursiv ...
  • Kombiner arbejdsbøger og arbejdsark; Fletabeller baseret på nøglekolonner; Opdel data i flere ark; Batch Konverter xls, xlsx og PDF...
  • Mere end 300 kraftfulde funktioner. Understøtter Office / Excel 2007-2021 og 365. Understøtter alle sprog. Nem implementering i din virksomhed eller organisation. Fuld funktioner 30-dages gratis prøveperiode. 60 dages pengene tilbage garanti.
kte-fane 201905

Fanen Office bringer en grænseflade til et kontor med Office, og gør dit arbejde meget lettere

  • Aktiver redigering og læsning af faner i Word, Excel, PowerPoint, Publisher, Access, Visio og Project.
  • Åbn og opret flere dokumenter i nye faner i det samme vindue snarere end i nye vinduer.
  • Øger din produktivitet med 50 % og reducerer hundredvis af museklik for dig hver dag!
officetab bund
Sorter kommentarer efter
Kommentarer (37)
Ingen vurderinger endnu. Vær den første til at bedømme!
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg vil gøre det modsatte - konvertere XLS til CSV. virker dette script?
Sub CSVtoXLS()
'Opdatering afExtendoffice20170814
Dim xFd som fildialog
Dim xSPath som streng
Dim xXLSFile As String
Dim xWsheet As String
Application.DisplayAlerts = False
Application.StatusBar = Sand
xWsheet = ActiveWorkbook.Name
Indstil xFd = Application.FileDialog(msoFileDialogFolderPicker)
xFd.Title = "Vælg en mappe:"
Hvis xFd.Show = -1 Så
xSPath = xFd.SelectedItems(1)
Else
Exit Sub
End If
Hvis Right(xSPath, 1) <> "\" Så xSPath = xSPath + "\"
xXLSFile = Dir(xSPath & "*.xls")
Gør mens xXLSFil <> ""
Application.StatusBar = "Konverterer: " & xXLSFile
Workbooks.Åbn Filnavn:=xSPath & xXLSFile
ActiveWorkbook.SaveAs Replace(xSPath & xXLSFile, ".xls", ".csv", vbTextCompare), xlNormal
ActiveWorkbook.Close
Windows(xWsheet).Aktiver
xXLSFil = Dir
Loop
Application.StatusBar = Falsk
Application.DisplayAlerts = True
End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
Sub ConvertCSVToXlsx()



Dæmp min fil som streng

Dim oldfname As String, newfname As String

Dæmp arbejdsfil

Dim mappenavn som streng



Application.DisplayAlerts = False

Application.ScreenUpdating = False



' Optag navnet på den aktuelle fil

minfil = ActiveWorkbook.Name



' Indstil mappenavnet til at arbejde igennem

mappenavn = "D:\tmp\"



' Gå gennem alle CSV-filer i mappen

arbejdsfil = Dir(mappenavn & "*.CSV")

Gør mens arbejdsfil <> ""

' Åbn CSV-fil

Arbejdsbøger. Åbn Filnavn:=mappenavn og arbejdsfil

' Optag navnet på den gamle CSV-fil

oldfname = ActiveWorkbook.FullName

' Konverter til XLSX

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

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

ActiveWorkbook.Close

' Slet gammel CSV-fil

Dræb oldfname

Windows(minfil).Aktiver

arbejdsfil = Dir()

Loop



Application.DisplayAlerts = True

Application.ScreenUpdating = True



End Sub
Denne kommentar blev minimeret af moderatoren på webstedet
"Tip: Hvis du vil konvertere CSV-filer til XLXS-filer, skal du blot ændre .xls til .xlsx i makroen ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare)."

Jeg prøvede dette, og Excel kunne ikke åbne de resulterende filer. Jeg fik følgende besked: "Excel kan ikke åbne filen 'filnavn.xlsx', fordi filformatet eller filtypenavnet ikke er gyldigt. Bekræft, at filen ikke er blevet beskadiget, og at filtypenavnet matcher filformatet."

Det lykkedes dog at konvertere scriptet til .xls.
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg fandt ikke det problem før, tak for din korrekte kommentar. Jeg har rettet tippet.
Denne kommentar blev minimeret af moderatoren på webstedet

Denne kommentar blev minimeret af moderatoren på webstedet
Mange tak for dit fremragende script til CSV til XLS. Det er meget mere nyttigt for mit arbejde
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,

Dit script er fantastisk, men det konverterer ikke csv'en adskilt af semikolon. Kan du venligst poste en løsning på dem?

Tak
Denne kommentar blev minimeret af moderatoren på webstedet
Beklager, her har jeg ingen løsning, måske kan du stille dit spørgsmål til vores forum, en anden kan hjælpe dig. https://www.extendoffice.com/forum.html
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg er måske forsinket, jeg fik lige problemet, hvor jeg skulle konvertere semikolon CSV-filerne, og jeg tilføjede dette til koden, og det virkede, håber dette vil hjælpe nogen

Skift 'Workbooks.Open Filename:=xSPath & xCSVFile' Med denne 'Workbooks.Open Filename:=xSPath & xCSVFile, Delimiter:=";", Local:=True'
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg brugte filen flere csv til flere xls, men får forkert xls de csv filer har; adskilt info, men bliver sammen i celler. Hvordan kan dette løses?
Denne kommentar blev minimeret af moderatoren på webstedet
Koden kan ikke understøtte den adskilte komma-csv-fil.
Denne kommentar blev minimeret af moderatoren på webstedet
Da jeg gav mappenavnet, sagde programmet: "Ingen filer matcher din søgning." Men der er 2,609 .csv-filer i mappen
Denne kommentar blev minimeret af moderatoren på webstedet
Koden understøtter ikke den adskilte komma csv-fil, er dine filer i dette tilfælde?
Denne kommentar blev minimeret af moderatoren på webstedet
Hej,

en god artikel - tak! Virker næsten for mig.

Her er problemet: Jeg har en pipe-separeret csv-fil. Jeg har ændret standardvinduets afgrænser (via kontrolpanel/regionale indstillinger) til "|". Så når jeg åbner csv-filen med Excel, åbner den, læser og analyserer felterne til kolonner korrekt. Alt jeg skal gøre er at gemme som xls eller xlsx, færdig. Når jeg ser på din kode, burde det være det, koden gør: Den åbner csv-filerne i en mappe, gemmer dem som xls eller xlsx og går over det.

Her er problemet: Når jeg åbner disse Excel-filer, er rørafgrænsningerne stadig der, intet er parset til kolonnerne. Dette var adfærden som før min ændring til den rørafgrænsede standardindstilling i Windows-indstillingerne. Så det ser ud til, at Excel ikke bruger disse Windows-indstillinger. Jeg bekræftede dette ved at erstatte rørafgrænsningerne med kommaafgrænsere i en kopi af filen - af de to filer forblev den rørafgrænsede uparset, den kommaafgrænsede blev fint konverteret.

Har du nogen idé om, hvor den Excel-indbyggede kommaafgrænsning kan findes eller ændres, eller om der er en måde i koden at gøre det på? Jeg ville foretrække IKKE at skulle søge og erstatte, og derefter gemme...

Tak, HC
Denne kommentar blev minimeret af moderatoren på webstedet
Hvis du ønsker at opdele dataene i kolonne baseret på rørafgrænseren i Excel, skal du blot bruge funktionen Tekst til kolonner til at opdele data ved / efter at have dækket csv-filerne til xls.
Denne kommentar blev minimeret af moderatoren på webstedet
Gør ikke rigtig koden nyttig til excel-filer.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej, fantastisk script, som fungerede for mig efter at have prøvet alle andre scripts tilgængelige i Google. Jeg har tilføjet et par linjer mere, som udfører teksten til kolonneoperationen, som jeg ønsker. Kan nogen hjælpe mig med at ændre scriptet ved at angive mappeplaceringen på det lokale drev i stedet for at åbne dialogboksen, da jeg faktisk automatiserer systemet
. Tak på forhånd
Denne kommentar blev minimeret af moderatoren på webstedet
Hi
Kunne du dele scriptet, der udfører teksten til kolonner??
Med venlig hilsen
Denne kommentar blev minimeret af moderatoren på webstedet
Fantastisk script efter at have søgt i alle andre scripts tilgængelige i Google. Kan nogen hjælpe med at ændre dette script ved at angive en mappeplacering i det lokale drev i stedet for at lade det åbne dialogboksen, da jeg faktisk automatiserer systemet. Tak på forhånd
Denne kommentar blev minimeret af moderatoren på webstedet
Fed kode. Meget brugbar. Hvis jeg ikke tager fejl, ser koden for .xlsx ud som .xls-koden.

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

Jeg går ud fra, at det skal være: ".csv" , ".xlsx", vbTextCompare osv.
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg har ændret koden, så beskrevet ovenfor; nu fungerer scriptet som forventet: det genererer xlsx-filer
Denne kommentar blev minimeret af moderatoren på webstedet
nej det har du ikke. der står stadig xls i begge versioner.
Denne kommentar blev minimeret af moderatoren på webstedet
denne makro viser ikke min csv-fil
Denne kommentar blev minimeret af moderatoren på webstedet
Et lille problem med denne kode er, at en vis nøjagtighed (antal decimaler) kan gå tabt, når du åbner en csv og gemmer den som xlsx.
Måden at forhindre dette på er at vælge alle celler lige efter åbning, indstille antallet af decimaler til det ønskede antal (15 for mig personligt) og *derefter* gemme som xlsx

Ellers har xlsx færre detaljer (mindre nøjagtighed i form af decimaler) end den originale csv, hvilket kan føre til problemer i nogle applikationer
Denne kommentar blev minimeret af moderatoren på webstedet
det ændrer mit datokolonneformat fra dd-mm-åååå til dd/mm/åååå, kan nogen hjælpe med, hvordan man forhindrer dette script i at ændre kolonneformater.
Mange tak.
Denne kommentar blev minimeret af moderatoren på webstedet
Hej hugorm, efter konvertering kan du formatere dem tilbage, vælge datoerne og højreklikke for at vælge Formater celler fra kontekstmenuen, i dialogboksen Formater celler, under fanen Nummer, klik på Brugerdefineret i kategorilisten, og skriv derefter mm-dd- yyyy ind i tekstboksen i højre sektion. Eller hvis du har Kutools til Excel, anvender du Anvend datoformatering for at ændre datoformatet, som du har brug for.
Denne kommentar blev minimeret af moderatoren på webstedet
stor artikel. Hvordan kan jeg gemme alle de konverterede filer på en ny placering? Kan du venligst opdatere koden og sende den til mig. Som at give brugeren mulighed for at vælge sin destinationsmappe.


Tak
Denne kommentar blev minimeret af moderatoren på webstedet
Du har en fejl på linje 22 i csv til xlsx
Med fejl - ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare), xlWorkbookDefault
Rettet - ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xslx", vbTextCompare), xlWorkbookDefault
Denne kommentar blev minimeret af moderatoren på webstedet
Tak for din påmindelse, jeg har opdateret den, tak igen.
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg får fejlen "Objektvariabel eller med blokvariabel ikke indstillet" for denne linje:
xFd.Title = "/Users/[mit.name]/Documents/[myFolder]" >> dette er stien til en bestemt mappe på min computer, hvor jeg laver konverteringen (mappen har en masse csv-filer inde i )

Gør jeg noget forkert her?
Denne kommentar blev minimeret af moderatoren på webstedet
Dette virker for mig, men filtypenavnet ændres ikke. Nogle tips?
Denne kommentar blev minimeret af moderatoren på webstedet
Det samme for mig -- alle filer forbliver .csv.
Denne kommentar blev minimeret af moderatoren på webstedet
Alle csv-filer, du vælger, er blevet gemt som nye excel-filer, de originale filer (csv) ændres ikke, der er nye excel-filer med samme indhold.
Denne kommentar blev minimeret af moderatoren på webstedet
Jeg havde samme problem. Hvis din kildefil har en udvidelse med store bogstaver (.CSV), virker den ikke. Bare udskift .csv til .CSV i koden i linje 22 og så burde det virke. Nå, det gjorde det i hvert fald for mig.
Denne kommentar blev minimeret af moderatoren på webstedet
Hvordan ville jeg inkorporere kode i XLSX batchfilrutinen for at adskille dataene i separate kolonner med semikolon? Den delte kode konverterer filen fra en .csv til en .xlsx, men den adskiller ikke dataene i separate kolonner.
Denne kommentar blev minimeret af moderatoren på webstedet
ja det er ikke arbejde.
Denne kommentar blev minimeret af moderatoren på webstedet
godmorgen ledsagere

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", ingen harce el proceso 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 decir, cavo si archivo 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.

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


Workbooks.Åbn Filnavn:=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ælg
ActiveWorkbook.Save

HASTA AQUI ENIG YO

ActiveWorkbook.Close
Windows(xWsheet).Aktiver
xCSVFile = Dir

Loop
Application.StatusBar = Falsk
Application.DisplayAlerts = True
End Sub

Jeg er ikke klar over, men det er et problem.
Der er endnu ingen kommentarer her
Efterlad dine kommentarer
Sender som gæst
×
Bedøm dette indlæg:
0   Tegn
Foreslåede steder

Følg os

Copyright © 2009 - www.extendoffice.com. | Alle rettigheder forbeholdes. Drevet af ExtendOffice. | | Sitemap
Microsoft og Office-logoet er varemærker eller registrerede varemærker tilhørende Microsoft Corporation i USA og / eller andre lande.
Beskyttet af Sectigo SSL