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

Hogyan lehet kötegelt módon konvertálni több CSV fájlt XLS (X) fájlokká az Excelben?

A CSV fájl XlS vagy XLSX fájlokká konvertálása a Mentés másként funkció használatával nagyon egyszerű. Több CSV fájl konvertálása XLS vagy XLSX fájlokká egy mappából azonban időigényes, ha egyesével manuálisan ment. Itt bemutatok egy makrókódot, amellyel az összes CSV fájlt gyorsan konvertálhatjuk egy mappából XLS (x) fájlokká.

Kötegelt konvertálás CSV fájlokat XlS (X) fájlok makrókóddal


Kötegelt konvertálás CSV fájlokat XlS (X) fájlok makrókóddal

Több CSV fájl konvertálásához egy mappából XLS (X) fájlokká az alábbiak szerint járhat el:

1. Engedélyezzen egy új munkafüzetet, nyomja meg a gombot Alt + F11 gombokat a megnyitáshoz Microsoft Visual Basic for Applications ablakot, és kattintson rá betétlap > Modulok. Lásd a képernyőképet:
doc kötegelt konvertálás cvs xls 1

Megjegyzések: Ellenőrizze, hogy az összes konvertálni kívánt CSV-fájl zárva van-e.

2. Ezután illessze be a makrókód alá a Modulok szkriptet, és nyomja meg a gombot F5 gombot a kód futtatásához.

VBA: Konvertálja a CSV-t XLS-be

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. A felbukkanó párbeszédpanelen válassza ki a konvertálni kívánt CSV-fájlokat tartalmazó mappát. Lásd a képernyőképet:
doc kötegelt konvertálás cvs xls 2

4. kettyenés OK, a kiválasztott mappában található összes CSV-fájlt átalakították benne lévő XLS-fájlokká.
doc kötegelt konvertálás cvs xls 3

típus: Ha CSV fájlokat szeretne konvertálni XLSX fájlokká, akkor használja a VBA kódot.

VBA: CSV fájlok konvertálása XLSX formátumra

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

gyorsan konvertálhat vagy exportálhat egy laptartományt egyszerre külön XLS / Word / PDF vagy más formátumú fájlokba

Általában az Excel nem támogatja a tartomány gyors exportálását vagy mentését CSV vagy Excel fájlként. Ha egy adattartományt CSV-ként vagy munkafüzetként szeretne menteni az Excel programban, akkor ehhez VBA-makrót kell használnia, vagy át kell másolnia a tartományt a vágólapra, és be kell illesztenie egy új munkafüzetbe, majd el kell mentenie a munkafüzetet CSV-fájlként vagy Munkafüzet. Kutools az Excel számára kiegészíti az Excel programot Tartomány exportálása fájlba segédprogram azoknak az Excel felhasználóknak, akik gyorsan szeretnék feldolgozni a következő műveleteket :  Kattintson a gombra 30-napos teljes értékű ingyenes próbaverzió!
doc exportálja a cellatartományt fájlba
 
Kutools for Excel: több mint 300 praktikus Excel-bővítménnyel, ingyenesen kipróbálható, korlátozás nélkül 30 nap.

Relatív cikkek:


A legjobb irodai termelékenységi eszközök

A Kutools for Excel megoldja a legtöbb problémát, és 80% -kal növeli a termelékenységet

  • újrafelhasználás: Gyorsan helyezze be összetett képletek, diagramok és bármi, amit korábban használt; Cellák titkosítása jelszóval; Levelezőlista létrehozása és e-maileket küldeni ...
  • Szuper Formula Bár (könnyedén szerkeszthet több szöveget és képletet); Olvasás elrendezés (könnyen olvasható és szerkeszthető nagyszámú cella); Beillesztés a Szűrt tartományba...
  • Cellák / sorok / oszlopok egyesítése az adatok elvesztése nélkül; Osztott cellák tartalma; Kombinálja a duplikált sorokat / oszlopokat... megakadályozza az ismétlődő cellákat; Hasonlítsa össze a tartományokat...
  • Válassza a Másolat vagy az Egyedi lehetőséget Sorok; Válassza az Üres sorok lehetőséget (az összes cella üres); Super Find és Fuzzy Find sok munkafüzetben; Véletlenszerű kiválasztás ...
  • Pontos másolás Több cella a képletreferencia megváltoztatása nélkül; Automatikus referenciák létrehozása több lapra; Helyezze be a golyókat, Jelölőnégyzetek és még sok más ...
  • Kivonat szöveg, Szöveg hozzáadása, Eltávolítás pozíció szerint, Hely eltávolítása; Hozz létre és nyomtasson személyhívó részösszegeket; Konvertálás a cellatartalom és a megjegyzések között...
  • Szuper szűrő (mentse el és alkalmazza a szűrősémákat más lapokra); Haladó rendezés hónap / hét / nap, gyakoriság és egyebek szerint; Speciális szűrő félkövér, dőlt betűvel ...
  • Kombinálja a munkafüzeteket és a munkalapokat; Táblázatok egyesítése kulcsoszlopok alapján; Az adatok felosztása több lapra; Kötegelt konvertálás xls, xlsx és PDF...
  • Több mint 300 hatékony funkció. Támogatja az Office / Excel 2007-2021 és 365 verziókat. Minden nyelvet támogat. Könnyű üzembe helyezés vállalatában vagy szervezetében. Teljes funkciók 30 napos ingyenes próbaverzió. 60 napos pénzvisszafizetési garancia.
kte lap 201905

Az Office fül a füles felületet hozza az Office-ba, és sokkal könnyebbé teszi a munkáját

  • Füles szerkesztés és olvasás engedélyezése Wordben, Excelben és PowerPointban, Publisher, Access, Visio és Project.
  • Több dokumentum megnyitása és létrehozása ugyanazon ablak új lapjain, mint új ablakokban.
  • 50% -kal növeli a termelékenységet, és naponta több száz kattintással csökkenti az egér kattintását!
officetab alja
A megjegyzések rendezése szerint
Hozzászólások (38)
Még nincs értékelés. Legyen Ön az első, aki értékel!
A weboldal moderátora ezt a megjegyzést minimalizálta
Az ellenkezőjét akarom tenni – konvertálni az XLS-t CSV-vé. működik ez a script?
Sub-CSVtoXLS()
'Frissítés általExtendoffice20170814
Dim xFd mint FileDialog
Dim xSPath karakterláncként
Dim xXLSFile As String
Dim xWsheet As String
Application.DisplayAlerts = Hamis
Application.StatusBar = Igaz
xWsheet = ActiveWorkbook.Name
Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
xFd.Title = "Válasszon ki egy mappát:"
Ha xFd.Show = -1 Akkor
xSPath = xFd.SelectedItems(1)
Más
Exit Sub
Ha véget
If Right(xSPath, 1) <> "\" Akkor xSPath = xSPath + "\"
xXLSFile = Dir(xSPath & "*.xls")
Csináld az xXLSFile <> "" közben
Application.StatusBar = "Konvertálás: " & xXLSFile
Workbooks.Open Filename:=xSPath & xXLSFile
ActiveWorkbook.SaveAs Replace(xSPath & xXLSFile, ".xls", ".csv", vbTextCompare), xlNormal
ActiveWorkbook.Close
Windows(xWsheet). Aktiválja
xXLSFile = Dir
Hurok
Application.StatusBar = False
Application.DisplayAlerts = Igaz
End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
Sub ConvertCSVToXlsx()



Dim myfile As String

Dim oldfname As String, newfname As String

Halvány munkafájl

Dim folderName As String



Application.DisplayAlerts = Hamis

Application.ScreenUpdating = Hamis



' Az aktuális fájl nevének rögzítése

myfile = ActiveWorkbook.Name



' Állítsa be a mappa nevét a művelethez

mappanév = "D:\tmp\"



' Lapozzon át a mappában lévő összes CSV-fájlon

workfile = Dir(mappanév & "*.CSV")

Do While munkafájl <> ""

Nyissa meg a CSV-fájlt

Workbooks.Open Filename:=mappanév és munkafájl

Rögzítse a régi CSV-fájl nevét

oldfname = ActiveWorkbook.FullName

Konvertálás XLSX-re

newfname = mappaNév & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & ".xlsx"

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

ActiveWorkbook.Close

Törölje a régi CSV-fájlt

Öld meg a régi nevet

Windows(myfile). Aktiválja

munkafájl = Dir()

Hurok



Application.DisplayAlerts = Igaz

Application.ScreenUpdating = Igaz



End Sub
A weboldal moderátora ezt a megjegyzést minimalizálta
"Tipp: Ha CSV-fájlokat szeretne XLXS-fájlokká konvertálni, akkor az ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare) makróban csak módosítania kell az .xls fájlt .xlsx fájlra."

Megpróbáltam, de az Excel nem tudta megnyitni a kapott fájlokat. A következő üzenetet kaptam: "Az Excel nem tudja megnyitni a "fájlnév.xlsx" fájlt, mert a fájl formátuma vagy kiterjesztése nem érvényes. Ellenőrizze, hogy a fájl nem sérült-e, és hogy a fájl kiterjesztése megegyezik-e a fájl formátumával."

A szkript azonban sikeres volt az .xls formátumba konvertálás során.
A weboldal moderátora ezt a megjegyzést minimalizálta
Korábban nem találtam ilyen problémát, köszönöm a korrekt megjegyzést. Javítottam a tippet.
A weboldal moderátora ezt a megjegyzést minimalizálta

A weboldal moderátora ezt a megjegyzést minimalizálta
Nagyon köszönjük a kiváló szkriptet a CSV-ről XLS-re. Sokkal hasznosabb a munkám szempontjából
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia,

A szkripted nagyszerű, de nem konvertálja a pontosvesszővel elválasztott csv-t. Tudnál ezekre megoldást írni?

Köszönöm
A weboldal moderátora ezt a megjegyzést minimalizálta
Elnézést, itt nincs megoldás, talán felteheti kérdését fórumunkra, valaki más segíthet. https://www.extendoffice.com/forum.html
A weboldal moderátora ezt a megjegyzést minimalizálta
Lehet, hogy késtem, most jött a probléma, amikor a pontosvesszős CSV-fájlokat kellett konvertálnom, és hozzáadtam ezt a kódhoz, és működött remélem ez segít valakinek

Módosítsa a 'Workbooks.Open Filename:=xSPath & xCSVFile' értéket a következővel: 'Workbooks.Open Filename:=xSPath & xCSVFile, Elválasztó:=";", Local:=True'
A weboldal moderátora ezt a megjegyzést minimalizálta
Több csv fájlt használtam több xl-hez, de rossz xls de csv fájlokat kaptam; szétválasztják az információkat, de cellákban összeállnak. Hogyan lehet ezt megoldani?
A weboldal moderátora ezt a megjegyzést minimalizálta
A kód nem támogatja a vesszővel elválasztott csv fájlt.
A weboldal moderátora ezt a megjegyzést minimalizálta
Amikor megadtam a mappa nevét, a program azt mondta: "Egyetlen fájl sem felel meg a keresésnek." De 2,609 .csv fájl van a mappában
A weboldal moderátora ezt a megjegyzést minimalizálta
A kód nem támogatja a vesszővel elválasztott csv fájlt, ebben az esetben az Ön fájljai?
A weboldal moderátora ezt a megjegyzést minimalizálta
Helló,

nagyszerű cikk - köszönöm! Nekem szinte működik.

Itt van a probléma: Van egy csővel elválasztott csv fájlom. Módosítottam az alapértelmezett Windows határolót (a vezérlőpulton/regionális beállításokon keresztül) "|"-ra. Tehát amikor megnyitom a csv fájlt az Excel programmal, az megnyílik, közvetlenül beolvassa és oszlopokká elemzi a mezőket. Csak annyit kell tennem, hogy elmentem xls vagy xlsx formátumban, kész. Ha megnézem a kódját, a kódnak ezt kell tennie: Megnyitja a csv fájlokat egy mappában, elmenti őket xls vagy xlsx formátumban, és áthalad ezen.

Itt van a probléma: Amikor megnyitom azokat az Excel fájlokat, a csőhatárolók továbbra is ott vannak, és semmi sem kerül elemzésre az oszlopokhoz. Ez volt a viselkedés, mint azelőtt, hogy megváltoztattam a csővel határolt alapértelmezett beállítást a Windows beállításaiban. Tehát úgy tűnik, hogy az Excel nem használja ezeket a Windows-beállításokat. Ezt úgy igazoltam, hogy a fájl másolatában a csőhatárolókat vesszőre cseréltem - a két fájl közül a csőhatároló elem elemzés nélkül maradt, a vesszővel elválasztott pedig jól át lett konvertálva.

Van valami ötleted, hogy hol található vagy változtatható meg az Excelbe beépített vesszőelválasztás, vagy van-e mód erre a kódban? Szeretném, ha NEM kellene keresni és cserélni, majd menteni...

Köszönöm, HC
A weboldal moderátora ezt a megjegyzést minimalizálta
Ha az adatokat oszlopokra szeretné osztani az Excel csőhatárolója alapján, egyszerűen használja a Szöveg oszlopokba funkciót az adatok felosztásához a / paranccsal, miután a csv-fájlokat xls-re takarja.
A weboldal moderátora ezt a megjegyzést minimalizálta
Nem igazán teszi hasznossá a kódot az Excel fájlokhoz.
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia, nagyszerű szkript, ami nekem bevált, miután kipróbáltam a Google-ban elérhető összes többi szkriptet. Hozzáadtam néhány további sort, amely végrehajtja a kívánt szöveget oszlopokba műveletet. Tud valaki segíteni, hogyan módosíthatom a szkriptet úgy, hogy megadom a mappa helyét a helyi meghajtón a párbeszédpanel megnyitása helyett, mivel valójában automatizálom a rendszert
. Előre is köszönöm
A weboldal moderátora ezt a megjegyzést minimalizálta
Hi
Meg tudnád osztani a szkriptet, ami a szöveget oszlopokba írja?
Üdvözlettel
A weboldal moderátora ezt a megjegyzést minimalizálta
Nagyszerű szkript a google-ban elérhető összes többi szkript keresése után. Tudna valaki segíteni, hogyan lehet módosítani ezt a szkriptet úgy, hogy megadja a mappa helyét a helyi meghajtón, ahelyett, hogy engedélyezné a párbeszédpanel megnyitását, mivel valójában automatizálom a rendszert. Előre is köszönöm
A weboldal moderátora ezt a megjegyzést minimalizálta
Klassz kódrészlet. Nagyon hasznos. Ha nem tévedek, az .xlsx kódja ugyanúgy néz ki, mint az .xls kód.

Ez a sor:
ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare), xlWorkbookDefault

Feltételezem, hogy ez legyen: ".csv" , ".xlsx", vbTextCompare stb.
A weboldal moderátora ezt a megjegyzést minimalizálta
Megváltoztattam a kódot a fent leírt módon; most a szkript a várt módon működik: xlsx fájlokat generál
A weboldal moderátora ezt a megjegyzést minimalizálta
nem, nem tetted. továbbra is xls-t ír mindkét verzióban.
A weboldal moderátora ezt a megjegyzést minimalizálta
ez a makró nem jeleníti meg a csv fájlomat
A weboldal moderátora ezt a megjegyzést minimalizálta
Egy kis probléma ezzel a kóddal, hogy bizonyos pontosság (a tizedesjegyek száma) elveszhet a csv megnyitásakor és xlsx-ként mentésekor.
Ezt úgy lehet megakadályozni, hogy megnyitás után azonnal kijelöljük az összes cellát, beállítjuk a tizedesjegyek számát a kívánt értékre (én személy szerint 15), és *majd* elmentjük xlsx-ként.

Ellenkező esetben az xlsx kevesebb részlettel rendelkezik (a tizedesjegyek pontossága kisebb), mint az eredeti csv, ami problémákat okozhat egyes alkalmazásokban
A weboldal moderátora ezt a megjegyzést minimalizálta
megváltoztatja a dátumoszlop formátumát nn-hh-éééé-ről nn/hh/éééé-re. Kérem, tudjon valaki segíteni abban, hogyan akadályozza meg, hogy ez a szkript változtassa meg az oszlopformátumokat.
Nagyon köszönöm.
A weboldal moderátora ezt a megjegyzést minimalizálta
Szia, vipera, az átalakítás után visszaformázhatod őket, kiválaszthatod a dátumokat, és jobb gombbal a helyi menüből kiválaszthatod a Cellák formázását, a Celld formázása párbeszédablakban a Szám fül alatt kattints az Egyéni elemre a Kategória listában, majd írd be az mm-dd- yyyy a jobb oldali rész szövegdobozába. Vagy ha rendelkezik Kutools for Excel programmal, használja a Dátumformátum alkalmazása funkciót, hogy szükség szerint módosítsa a dátumformátumot.
A weboldal moderátora ezt a megjegyzést minimalizálta
remek cikk. Hogyan menthetem el az összes konvertált fájlt új helyre? Kérem, frissítse a kódot és küldje el nekem. Mintha a felhasználó választhatná ki a célmappáját.


Kösz
A weboldal moderátora ezt a megjegyzést minimalizálta
Hiba van a csv–xlsx 22. sorában
Hibával - ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare), xlWorkbookDefault
Javítva – ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xslx", vbTextCompare), xlWorkbookDefault
A weboldal moderátora ezt a megjegyzést minimalizálta
Köszönöm az emlékeztetőt, frissítettem, még egyszer köszönöm.
A weboldal moderátora ezt a megjegyzést minimalizálta
"Objektumváltozó vagy blokkváltozó nincs beállítva" hibát kapok ehhez a sorban:
xFd.Title = "/Users/[my.name]/Documents/[myFolder]" >> ez egy adott mappa elérési útja a számítógépemen, ahol az átalakítást végzem (a mappában egy csomó csv fájl található )

Csinálok valami rosszat itt?
A weboldal moderátora ezt a megjegyzést minimalizálta
Ez működik nálam, de a fájl kiterjesztése nem változik. Egyéb ötletek?
A weboldal moderátora ezt a megjegyzést minimalizálta
Ugyanez nekem is -- minden fájl .csv marad.
A weboldal moderátora ezt a megjegyzést minimalizálta
Az összes kiválasztott csv fájl új excel fájlként lett elmentve, az eredeti fájlok (csv) nem változnak, vannak új, azonos tartalmú excel fájlok.
A weboldal moderátora ezt a megjegyzést minimalizálta
Ugyanez volt a problémám. Ha a forrásfájl nagybetűs kiterjesztéssel rendelkezik (.CSV), az nem működik. Csak cserélje ki a .csv-t .CSV-re a 22. sorban lévő kódban, és akkor működnie kell. Nos, legalábbis nekem sikerült.
A weboldal moderátora ezt a megjegyzést minimalizálta
Hogyan építhetek be kódot az XLSX kötegfájl rutinjába, hogy az adatokat pontosvesszővel külön oszlopokba válasszam? A megosztott kód a fájlt .csv-ből .xlsx formátumba konvertálja, de nem választja szét az adatokat külön oszlopokba.
A weboldal moderátora ezt a megjegyzést minimalizálta
igen, nem működik.
A weboldal moderátora ezt a megjegyzést minimalizálta
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, inclusive usando la Option de "USAR REFERENCIAS RELATIVAS", no hace 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, como si abrieraeda 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 saber como puedo hacer para aplicar la conversion a 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(Tömb(0, 1), Tömb(18 _
, 1), Array(38, 1)), TrailingMinusNumbers:=True
ActiveCell.Cells.Select
ActiveCell.Cells.EntireColumn.AutoFit
ActiveCell.Offset(1, 0).Tartomány("A1").Válassza ki
ActiveWorkbook.Save

HASTA AQUI EGYETÉRÉS YO

ActiveWorkbook.Close
Windows(xWsheet). Aktiválja
xCSVFile = Dir

Hurok
Application.StatusBar = False
Application.DisplayAlerts = Igaz
End Sub

No se si me hago explicar bien, pero es mi problem.
Még senki sem írt megjegyzést
Több ingatlan

Kövess minket

Copyright © 2009 - www.extendoffice.com. | Minden jog fenntartva. Powered by ExtendOffice. | Oldaltérkép
A Microsoft és az Office logó a Microsoft Corporation védjegyei vagy bejegyzett védjegyei az Egyesült Államokban és / vagy más országokban.
Sectigo SSL védi