Note: The other languages of the website are Google-translated. Back to English
Σύνδεση  \/ 
x
or
x
Εγγραφή  \/ 
x

or

Πώς να μετατρέψετε πολλά αρχεία CSV σε αρχεία XLS (X) στο Excel;

Η μετατροπή ενός αρχείου CSV σε αρχείο XlS ή XLSX είναι πολύ εύκολο για εσάς, εφαρμόζοντας τη δυνατότητα Αποθήκευση ως. Ωστόσο, η μετατροπή πολλών αρχείων CSV σε αρχεία XLS ή XLSX από ένα φάκελο είναι χρονοβόρα αποθηκεύοντας ένα προς ένα χειροκίνητα. Εδώ εισάγω έναν κώδικα μακροεντολής για γρήγορη μετατροπή παρτίδων όλων των αρχείων CSV σε αρχεία XLS (x) από ένα φάκελο.

Μαζική μετατροπή αρχείων CSV σε αρχεία XlS (X) με κώδικα μακροεντολής


Μαζική μετατροπή αρχείων CSV σε αρχεία XlS (X) με κώδικα μακροεντολής

Για να μετατρέψετε πολλά αρχεία CSV από έναν φάκελο σε αρχεία XLS (X), μπορείτε να κάνετε τα παρακάτω βήματα:

1. Ενεργοποιήστε ένα νέο βιβλίο εργασίας, πατήστε Alt + F11 κλειδιά για άνοιγμα Microsoft Visual Basic για εφαρμογές κάντε κλικ στο παράθυρο Κύριο θέμα > Μονάδα μέτρησης. Δείτε το στιγμιότυπο οθόνης:
doc batch convert cvs xls 1

Note: Βεβαιωθείτε ότι όλα τα αρχεία CSV που θέλετε να μετατρέψετε είναι κλειστά.

2. Στη συνέχεια επικολλήστε τον παρακάτω κώδικα μακροεντολών στο Μονάδα μέτρησης σενάριο και πατήστε F5 κλειδί για την εκτέλεση του κώδικα.

VBA: Μετατροπή CSV σε 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. Στο αναδυόμενο παράθυρο διαλόγου, επιλέξτε τον καθορισμένο φάκελο που περιέχει τα αρχεία CSV που θέλετε να μετατρέψετε. Δείτε το στιγμιότυπο οθόνης:
doc batch convert cvs xls 2

4. κλικ OK, όλα τα αρχεία CSV στον επιλεγμένο φάκελο έχουν μετατραπεί σε αρχεία XLS σε αυτόν.
doc batch convert cvs xls 3

Άκρο: Εάν θέλετε να μετατρέψετε αρχεία CSV σε αρχεία XLSX, χρησιμοποιείτε τον παρακάτω κώδικα VBA.

VBA: Μετατροπή αρχείων CSV σε 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

γρήγορα μετατρέψτε ή εξαγάγετε μια σειρά φύλλων για να διαχωρίσετε XLS / Word / PDF ή άλλα αρχεία μορφής ταυτόχρονα

Κανονικά, το Excel δεν σας υποστηρίζει με την επιλογή γρήγορης εξαγωγής ή αποθήκευσης ενός εύρους ως αρχείο CSV ή Excel. Εάν θέλετε να αποθηκεύσετε ένα εύρος δεδομένων ως CSV ή βιβλίο εργασίας στο Excel, ίσως χρειαστεί να χρησιμοποιήσετε μια μακροεντολή VBA για να το κάνετε αυτό ή να αντιγράψετε το εύρος στο πρόχειρο και να το επικολλήσετε σε ένα νέο βιβλίο εργασίας και, στη συνέχεια, να αποθηκεύσετε το βιβλίο εργασίας ως CSV ή ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΙΩΝ. Kutools για Excel αυξάνει το Excel με Εξαγωγή εύρους σε αρχείο βοηθητικό πρόγραμμα για χρήστες του Excel που θέλουν να επεξεργαστούν γρήγορα τις ακόλουθες λειτουργίες:  Κάντε κλικ για δωρεάν δοκιμαστική περίοδο 30 ημερών!
doc εύρος κελιού εξαγωγής σε αρχείο
 
Kutools για Excel: με περισσότερα από 300 εύχρηστα πρόσθετα Excel, δωρεάν δοκιμή χωρίς περιορισμό σε 30 ημέρες.

Σχετικά άρθρα:


Τα καλύτερα εργαλεία παραγωγικότητας του Office

Το Kutools για Excel λύνει τα περισσότερα από τα προβλήματά σας και αυξάνει την παραγωγικότητά σας κατά 80%

  • Επαναχρησιμοποίηση: Εισαγάγετε γρήγορα σύνθετοι τύποι, γραφήματα και οτιδήποτε έχετε χρησιμοποιήσει στο παρελθόν. Κρυπτογράφηση κυττάρων με κωδικό πρόσβασης Δημιουργία λίστας αλληλογραφίας και στείλτε email ...
  • Super Formula Bar (επεξεργαστείτε εύκολα πολλές γραμμές κειμένου και τύπου). Διάταξη ανάγνωσης (εύκολη ανάγνωση και επεξεργασία μεγάλου αριθμού κελιών). Επικόλληση σε φιλτραρισμένο εύρος...
  • Συγχώνευση κελιών / σειρών / στηλών χωρίς απώλεια δεδομένων · Περιεχόμενο διαχωρισμού κελιών Συνδυάστε διπλές σειρές / στήλες... Αποτροπή διπλών κυττάρων; Συγκρίνετε τα εύρη...
  • Επιλέξτε Διπλότυπο ή Μοναδικό Σειρές; Επιλέξτε Κενές σειρές (όλα τα κελιά είναι κενά). Σούπερ εύρεση και ασαφής εύρεση σε πολλά βιβλία εργασίας. Τυχαία επιλογή ...
  • Ακριβές αντίγραφο Πολλαπλά κελιά χωρίς αλλαγή της αναφοράς τύπου. Αυτόματη δημιουργία αναφορών σε πολλαπλά φύλλα? Εισαγωγή κουκκίδων, Πλαίσια ελέγχου και άλλα ...
  • Εξαγωγή κειμένου, Προσθήκη κειμένου, Κατάργηση κατά θέση, Αφαιρέστε το διάστημα; Δημιουργία και εκτύπωση υποσύνολων σελιδοποίησης. Μετατροπή περιεχομένου και σχολίων μεταξύ κελιών...
  • Σούπερ φίλτρο (αποθηκεύστε και εφαρμόστε σχήματα φίλτρων σε άλλα φύλλα). Προηγμένη ταξινόμηση ανά μήνα / εβδομάδα / ημέρα, συχνότητα και άλλα. Ειδικό φίλτρο με έντονη, πλάγια ...
  • Συνδυάστε βιβλία εργασίας και φύλλα εργασίας; Συγχώνευση πινάκων βάσει βασικών στηλών. Διαχωρίστε τα δεδομένα σε πολλά φύλλα; Μαζική μετατροπή xls, xlsx και PDF...
  • Περισσότερα από 300 ισχυρά χαρακτηριστικά. Υποστηρίζει Office / Excel 2007-2019 και 365. Υποστηρίζει όλες τις γλώσσες. Εύκολη ανάπτυξη στην επιχείρηση ή τον οργανισμό σας. Πλήρεις δυνατότητες δωρεάν δοκιμής 30 ημερών. Εγγύηση επιστροφής χρημάτων 60 ημερών.
kte καρτέλα 201905

Το Office Tab φέρνει τη διεπαφή με καρτέλες στο Office και κάνει την εργασία σας πολύ πιο εύκολη

  • Ενεργοποίηση επεξεργασίας και ανάγνωσης καρτελών σε Word, Excel, PowerPoint, Publisher, Access, Visio και Project.
  • Ανοίξτε και δημιουργήστε πολλά έγγραφα σε νέες καρτέλες του ίδιου παραθύρου και όχι σε νέα παράθυρα.
  • Αυξάνει την παραγωγικότητά σας κατά 50% και μειώνει εκατοντάδες κλικ ποντικιού για εσάς κάθε μέρα!
κάτω μέρος γραφείου
Say something here...
symbols left.
You are guest
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Dan · 20 days ago
    How would I incorporate code into the XLSX batch file routine to semicolon separate the data into separate columns?  The code shared converts the file from a .csv to a .xlsx, but it doesn't separate the data into separate columns.
  • To post as a guest, your comment is unpublished.
    Robin · 10 months ago
    This is working for me, but the file extension is not changing. Any tips?
    • To post as a guest, your comment is unpublished.
      Pascal · 7 months ago
      I had the same problem. If your source file has an extention in capital letters (.CSV) it doesnt work. Just replace .csv to .CSV in the code in line 22 and then it should work. Well, at least for me it did.
    • To post as a guest, your comment is unpublished.
      stevehurm · 10 months ago
      Same for me -- all files remain .csv.
      • To post as a guest, your comment is unpublished.
        Sunny · 7 months ago
        All csv files you choose have been save as new excel files, the original files (csv) do not change, there are new excel files with same contents existing.
  • To post as a guest, your comment is unpublished.
    Dixon · 1 years ago
    I get an error "Object variable or with block variable not set" for this line:
    xFd.Title = "/Users/[my.name]/Documents/[myFolder]" >> this is the path of a particular folder on my computer where I'm doing the conversion (the folder has a bunch of csv files inside)

    Am I doing something wrong here?
  • To post as a guest, your comment is unpublished.
    Jason · 1 years ago
    You have an error on line 22 of the csv to xlsx
    With Error - ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare), xlWorkbookDefault
    Corrected - ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xslx", vbTextCompare), xlWorkbookDefault
    • To post as a guest, your comment is unpublished.
      Sunny · 1 years ago
      Thanks for your reminder, I have updated it, thanks again.
  • To post as a guest, your comment is unpublished.
    aaqil Rahman · 1 years ago
    great article. How can I, save all the converted files in a new location? Can you please update the code and send it to me. Like allowing the user to choose his destination folder.


    Thanks
  • To post as a guest, your comment is unpublished.
    viper · 1 years ago
    it changes my date column format from dd-mm-yyyy to dd/mm/yyyy, please can anyone help with how to prevent this script from changing column formats.
    Thanks a lot.
    • To post as a guest, your comment is unpublished.
      Sunny · 1 years ago
      Hi, viper, after conversion, you can format them back, select the dates and right click to choose Format Cells from context menu, in the Format Celld dialog, under Number tab, click Custom in the Category list, then type mm-dd-yyyy into the textbox in right section. Or if you have Kutools for Excel, applying the Apply Date Formatting to change the date format as you need.
  • To post as a guest, your comment is unpublished.
    Sam · 2 years ago
    One small issue with this code is that some accuracy (number of decimals) can be lost when opening a csv and saving it as xlsx.
    The way to prevent this is to select all cells right after opening, set the number of decimal places to the desired amount (15 for me personally), and *then* saving as xlsx

    Otherwise, the xlsx has less detail (less accuracy in terms of decimals) than the original csv, which can lead to problems in some applications
  • To post as a guest, your comment is unpublished.
    Rose · 2 years ago
    this macro does not show my csv file
  • To post as a guest, your comment is unpublished.
    stb · 2 years ago
    Cool bit of code. Very useful. If I'm not mistaken the code for .xlsx looks the same as the .xls code.

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

    I assume it should be: ".csv" , ".xlsx", vbTextCompare etc.
    • To post as a guest, your comment is unpublished.
      iBrezel · 2 years ago
      I've changed the code so, described above; now the script works as expected: it generates xlsx files
      • To post as a guest, your comment is unpublished.
        thy · 2 years ago
        no you haven't. it still says xls in both versions.
  • To post as a guest, your comment is unpublished.
    koliarpramod935@gmail.com · 2 years ago
    Great Script after searching all other script available in google. Can anybody help how to modify this script by specifying a folder location in local drive instead of allowing it to open the dialog box as i am actually automating the system. Thanks in advance
  • To post as a guest, your comment is unpublished.
    Pramod Koliar · 2 years ago
    Hi, great script which worked for me after trying all other script available in google. I have added few more lines which performs the text to columns operation which i want. Can anybody help me how to modify the script by specifying the folder location in local drive instead of opening the dialog box as i am actually automating the system
    . Thanks in advance
    • To post as a guest, your comment is unpublished.
      equiposlagares@gmail.com · 2 years ago
      Hi
      Could you share the script that performs the text to columns??
      Best Regards
  • To post as a guest, your comment is unpublished.
    HC · 2 years ago
    Hello,

    a great article - thank you! Almost works for me.

    Here's the problem: I have a pipe-delimited csv file. I have changed the default windows delimiter (via control panel/regional settings) to "|". So, when I open the csv file with Excel, it opens, directly reads and parses the fields to columns correctly. All I have to do is to save as xls or xlsx, done. When I look at your code, that should be what the code does: It opens the csv files in a folder, saves them as xls or xlsx, and loops over that.

    Here is the problem: When I open those Excel files, the pipe delimiters are still there, nothing is parsed to the columns. This was the behavior as before my change to the pipe delimited default setting in the Windows settings. So it seems like Excel doesn't use those Windows settings. I verified this by replacing the pipe delimiters with comma delimiters in a copy of the file - of the two files, the pipe-delimited remained unparsed, the comma delimited got converted just fine.

    Any idea where that Excel-inbuilt comma delimitation can be found or changed, or whether there is a way in the code to do that? I would prefer NOT to have to do a search and replace, then save...

    Thanks, HC
    • To post as a guest, your comment is unpublished.
      Sunny · 2 years ago
      If you want to split the data into column based on the pipe delimiter in Excel, just use Text to Columns function to split data by / after coverting the csv files to xls.
      • To post as a guest, your comment is unpublished.
        Sat · 10 months ago
        Doesn't really make the code useful for excel files.
  • To post as a guest, your comment is unpublished.
    Fred Maye · 2 years ago
    WHen I gave the folder name, the program said, "No files match your search." But there are 2,609 .csv files in the folder
    • To post as a guest, your comment is unpublished.
      Sunny · 2 years ago
      The code not support the separated comma csv file, are your files in this case?
  • To post as a guest, your comment is unpublished.
    ptee · 3 years ago
    I used the file multiple csv to multiple xls but get wrong xls de csv files have ; seperated info but become together in cells. How can this been solved?
    • To post as a guest, your comment is unpublished.
      Sunny · 2 years ago
      The code cannot support the separated comma csv file.
  • To post as a guest, your comment is unpublished.
    Dragos · 3 years ago
    Hi,

    Your script is great but it doesn't convert the csv separated by semicolons. Can you please post a solution for those?

    Thank you
    • To post as a guest, your comment is unpublished.
      strauss113 · 2 years ago
      i might be late i just got the issue where i needed to convert the semicolons CSV files and i added this to the code and it worked hope this will help someone

      Change 'Workbooks.Open Filename:=xSPath & xCSVFile' By this 'Workbooks.Open Filename:=xSPath & xCSVFile, Delimiter:=";", Local:=True'
    • To post as a guest, your comment is unpublished.
      Sunny · 3 years ago
      Sorry,here I do not have any solution, maybe you can place your question to our forum, someone else may help you. https://www.extendoffice.com/forum.html
  • To post as a guest, your comment is unpublished.
    Sathish · 3 years ago
    Thankyou so much for your excellent script for CSV to XLS. Its much more useful to my work
  • To post as a guest, your comment is unpublished.
    mathaio · 3 years ago
    "Tip: If you want to convert CSV files to XLXS files, you just need to change .xls to .xlsx in the macro ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare)."

    I tried this, and Excel could not open the resulting files. I got the following message: "Excel cannot open the file 'filename.xlsx' because the file format or file extension is not valid. Verify that the file has not been corrupted and that the file extension matches the format of the file."

    However, the script was successful for converting to .xls.
    • To post as a guest, your comment is unpublished.
      Sunny · 3 years ago
      I did not find that problem before, thank you for your correct comment. I have corrected the tip.
  • To post as a guest, your comment is unpublished.
    Karen · 3 years ago
    I want to do the opposite - convert XLS to CSV. does this script work?
    Sub CSVtoXLS()
    'UpdatebyExtendoffice20170814
    Dim xFd As FileDialog
    Dim xSPath As String
    Dim xXLSFile 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 + "\"
    xXLSFile = Dir(xSPath & "*.xls")
    Do While xXLSFile <> ""
    Application.StatusBar = "Converting: " & xXLSFile
    Workbooks.Open Filename:=xSPath & xXLSFile
    ActiveWorkbook.SaveAs Replace(xSPath & xXLSFile, ".xls", ".csv", vbTextCompare), xlNormal
    ActiveWorkbook.Close
    Windows(xWsheet).Activate
    xXLSFile = Dir
    Loop
    Application.StatusBar = False
    Application.DisplayAlerts = True
    End Sub
    • To post as a guest, your comment is unpublished.
      brad · 1 years ago
      Sub ConvertCSVToXlsx()

      Dim myfile As String
      Dim oldfname As String, newfname As String
      Dim workfile
      Dim folderName As String

      Application.DisplayAlerts = False
      Application.ScreenUpdating = False

      ' Capture name of current file
      myfile = ActiveWorkbook.Name

      ' Set folder name to work through
      folderName = "D:\tmp\"

      ' Loop through all CSV filres in folder
      workfile = Dir(folderName & "*.CSV")
      Do While workfile <> ""
      ' Open CSV file
      Workbooks.Open Filename:=folderName & workfile
      ' Capture name of old CSV file
      oldfname = ActiveWorkbook.FullName
      ' Convert to XLSX
      newfname = folderName & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & ".xlsx"
      ActiveWorkbook.SaveAs Filename:=newfname, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=True
      ActiveWorkbook.Close
      ' Delete old CSV file
      Kill oldfname
      Windows(myfile).Activate
      workfile = Dir()
      Loop

      Application.DisplayAlerts = True
      Application.ScreenUpdating = True

      End Sub