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

Làm cách nào để chuyển đổi hàng loạt nhiều tệp Excel sang tệp CSV trong Excel?

Trong Excel, chúng ta có thể chuyển đổi sổ làm việc thành tệp CSV bằng chức năng Lưu dưới dạng, nhưng bạn có thể biết cách chuyển đổi hàng loạt nhiều tệp Excel thành các tệp CSV riêng biệt không? Trong bài viết này, tôi giới thiệu mã VBA để chuyển đổi hàng loạt tất cả các tệp Excel trong một thư mục sang tệp CSV trong Excel.

Chuyển đổi hàng loạt tệp Excel của một thư mục thành tệp CSV bằng VBA

Chuyển đổi các trang tính của sổ làm việc thành các tệp CSV riêng biệt với Kutools cho Excelý kiến ​​hay3


Chuyển đổi hàng loạt tệp Excel của một thư mục thành tệp CSV bằng VBA

Trong Excel, không có hàm tích hợp nào có thể giải quyết công việc này nhanh chóng ngoại trừ VBA.

1. Bật Excel và nhấn Alt + F11 chìa khóa mở Microsoft Visual Basic cho các ứng dụng cửa sổ.

2. nhấp chuột Chèn > Mô-đun để tạo một Mô-đun mới.

3. Sao chép mã bên dưới và dán chúng vào cửa sổ Mô-đun mới.

VBA: Chuyển đổi hàng loạt tệp Excel sang 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. nhấn F5 , chọn thư mục chứa các tệp Excel bạn muốn chuyển đổi thành tệp CSV trong hộp thoại bật lên đầu tiên.
doc lô sang csv 1

5. nhấp chuột OK, sau đó trong hộp thoại bật lên thứ hai, hãy chọn thư mục để đặt tệp CSV.
doc lô sang csv 2

6. nhấp chuột OK, bây giờ các tệp Excel trong thư mục đã được chuyển đổi thành tệp CSV và được lưu trong một thư mục khác.
doc lô sang csv 3


Chuyển đổi các trang tính của sổ làm việc thành các tệp CSV riêng biệt với Kutools cho Excel

Như chúng ta đã biết, chúng ta chỉ có thể chuyển đổi toàn bộ sổ làm việc thành một tệp CSV trong Excel bằng chức năng Lưu dưới dạng của nó. Nhưng trong một số trường hợp, bạn muốn chuyển đổi một trang tính thành tệp CSV, trong trường hợp này, Chia sổ làm việc tiện ích của Kutools cho Excel có thể giúp bạn.

Kutools cho Excel, với hơn 300 chức năng tiện dụng, giúp công việc của bạn dễ dàng hơn. 

Sau khi cài đặt Kutools cho Excel, vui lòng làm như sau:(Tải xuống miễn phí Kutools cho Excel ngay!)

1. Bật sổ làm việc bạn muốn chuyển đổi các trang tính của nó thành các tệp CSV riêng biệt, hãy nhấp vào Kutools Plus > Bảng tính > Chia sổ làm việc.
doc lô sang csv 4

2. bên trong Chia sổ làm việc hộp thoại, kiểm tra tên trang tính bạn muốn tách (tất cả các trang tính được chọn theo mặc định), kiểm tra Tiết kiệm như gõ, chọn CSV (Macintosh) (* .CSV) từ danh sách thả xuống.
doc lô sang csv 5

3. nhấp chuột chẻ bật ra một Chọn thư mục , chọn hoặc tạo một thư mục để đặt các tệp CSV.
doc lô sang csv 6

4. nhấp chuột OK, bây giờ sổ làm việc đã được chia thành các tệp CSV riêng biệt.
doc lô sang csv 7


Các công cụ năng suất văn phòng tốt nhất

Kutools cho Excel giải quyết hầu hết các vấn đề của bạn và tăng 80% năng suất của bạn

  • Tái sử dụng: Chèn nhanh công thức phức tạp, biểu đồ và bất cứ thứ gì bạn đã sử dụng trước đây; Mã hóa ô với mật khẩu; Tạo danh sách gửi thư và gửi email ...
  • Thanh siêu công thức (dễ dàng chỉnh sửa nhiều dòng văn bản và công thức); Bố cục đọc (dễ dàng đọc và chỉnh sửa số lượng ô lớn); Dán vào Dải ô đã Lọchữu ích. Cảm ơn !
  • Hợp nhất các ô / hàng / cột mà không làm mất dữ liệu; Nội dung phân chia ô; Kết hợp các hàng / cột trùng lặp... Ngăn chặn các ô trùng lặp; So sánh các dãyhữu ích. Cảm ơn !
  • Chọn trùng lặp hoặc duy nhất Hàng; Chọn hàng trống (tất cả các ô đều trống); Tìm siêu và Tìm mờ trong Nhiều Sổ làm việc; Chọn ngẫu nhiên ...
  • Bản sao chính xác Nhiều ô mà không thay đổi tham chiếu công thức; Tự động tạo tài liệu tham khảo sang Nhiều Trang tính; Chèn Bullets, Hộp kiểm và hơn thế nữa ...
  • Trích xuất văn bản, Thêm Văn bản, Xóa theo Vị trí, Xóa không gian; Tạo và In Tổng số phân trang; Chuyển đổi giữa nội dung ô và nhận xéthữu ích. Cảm ơn !
  • Siêu lọc (lưu và áp dụng các lược đồ lọc cho các trang tính khác); Sắp xếp nâng cao theo tháng / tuần / ngày, tần suất và hơn thế nữa; Bộ lọc đặc biệt bằng cách in đậm, in nghiêng ...
  • Kết hợp Workbook và WorkSheets; Hợp nhất các bảng dựa trên các cột chính; Chia dữ liệu thành nhiều trang tính; Chuyển đổi hàng loạt xls, xlsx và PDFhữu ích. Cảm ơn !
  • Hơn 300 tính năng mạnh mẽ. Hỗ trợ Office / Excel 2007-2021 và 365. Hỗ trợ tất cả các ngôn ngữ. Dễ dàng triển khai trong doanh nghiệp hoặc tổ chức của bạn. Đầy đủ tính năng Dùng thử miễn phí 30 ngày. Bảo đảm hoàn lại tiền trong 60 ngày.
tab kte 201905

Tab Office mang lại giao diện Tab cho Office và giúp công việc của bạn trở nên dễ dàng hơn nhiều

  • Cho phép chỉnh sửa và đọc theo thẻ trong Word, Excel, PowerPoint, Publisher, Access, Visio và Project.
  • Mở và tạo nhiều tài liệu trong các tab mới của cùng một cửa sổ, thay vì trong các cửa sổ mới.
  • Tăng 50% năng suất của bạn và giảm hàng trăm cú nhấp chuột cho bạn mỗi ngày!
officetab dưới cùng
Nhận xét (36)
Chưa có xếp hạng. Hãy là người đầu tiên xếp hạng!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Ty nó thực sự hoạt động thân yêu !!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Hoạt động tuyệt vời, cảm ơn vì mã!
Nhận xét duy nhất của tôi là mã này cắt tên tệp khi có dấu "." trong chính tên tệp (ví dụ: tệp.123.csv biến thành tệp.csv).
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Bạn đã tìm ra cách giải quyết vấn đề này chưa?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Carol,

Trên dòng 33, tôi đã thay thế mã này:

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

Với mã này:

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

Lưu ý rằng nếu bạn đang sử dụng một số phần mở rộng excel khác (.xls, .xlsm, v.v.), bạn nên thay đổi nó như vậy :)
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cảm ơn bạn rất nhiều! Điều này đã giúp tôi tiết kiệm rất nhiều thời gian !!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Một nhận xét nhỏ khác:

Nếu tất cả các ô trong tệp Excel gốc đều được định dạng là "Chung", thì một số độ chính xác sẽ bị mất khi tệp được lưu dưới dạng CSV
Ví dụ: nếu giá trị ô trong Excel là 0.123456789123456, thì giá trị trong CSV sẽ là 0.123456789 (thiếu các số thập phân còn lại), miễn là ô được định dạng là 'Chung'. Điều này có thể được giải quyết bằng cách định dạng tất cả các ô trong tệp Excel thành bất kỳ ô nào khác ngoài 'Chung' (ví dụ: 'Văn bản'). Trong trường hợp đó, CSV * sẽ * vẫn có đầy đủ chi tiết / độ chính xác. Tức là các giá trị trong tệp Excel sẽ hoàn toàn nguyên vẹn sau khi lưu dưới dạng CSV.

Làm thế nào macro này có thể thay đổi được, vì vậy nó đặt định dạng của tất cả các ô trong tệp Excel thành 'Văn bản', trước khi lưu dưới dạng CSV?
Tôi tưởng tượng rằng bằng cách nào đó nó phải sử dụng những điều sau, nhưng tôi không thể tìm ra cách đưa vào trong macro một cách chính xác:

Cells.Select
Selection.NumberFormat = "@"
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cảm ơn bạn đã chia sẻ. Tôi đang cố gắng lưu nhiều tệp xls chứa một giá trị duy nhất, tạo ra lời nhắc hỏi có hoặc không trước khi lưu. Lời nhắc đọc ..

"Một số tính năng trong sổ làm việc của bạn có thể bị mất nếu bạn lưu nó dưới dạng CSV (Phân cách bằng dấu phẩy). Bạn có muốn tiếp tục sử dụng định dạng đó không?"

Ai đó có biết nơi thêm mã để trả lời có cho lời nhắc này không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Tôi nghĩ rằng cần thêm xử lý lỗi tốt hơn cho các tệp có ký tự đặc biệt, hiện tại chúng chỉ đơn giản là bị bỏ qua.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
hàng đầu cảm ơn :)
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Thật đáng kinh ngạc. Cảm ơn bạn!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào! Tôi đã thử phương pháp đầu tiên và rất hy vọng nhưng có vẻ như nó sẽ không thay đổi chúng vì chúng đã ở một số dạng CSV. Có lẽ có một quá trình dễ dàng hơn nhưng tôi không thể tìm thấy bất cứ điều gì. Tôi có thể phải chuyển đổi 8 tệp đã được lưu ở định dạng này và tôi không muốn mở mọi tệp và Lưu dưới dạng nếu tôi có thể tránh được. Bất kỳ trợ giúp được đánh giá cao!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Vì vậy, sau khi xem lại mã kỹ hơn một chút, tôi đã thấy loại tệp ban đầu phải là .xls. Vì vậy, thay thế bằng .csv đã giải quyết được vấn đề.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào,
das Makro funktioniert ganz gut, aber bei mir kommt, wenn ich als filename: xlCSVUTF8 eine anders formatierte CSV raus als ich über Speichern unter -> csv (utf8) erreiche!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
xObjWB.SaveAs Tên tệp: = xStrCSVFName, FileFormat: = xlCSVUTF8
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
also er schreibt die verschiedenen Spalten alle trong eine Spalte, dass müsste der Fehler sein ?!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
chào bạn .. trong một số tệp excel sẽ được chuyển sang csv có một danh nghĩa phải được làm tròn, giải pháp là gì? Cảm ơn
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, Sam, không có giải pháp nào để giải quyết vấn đề này ngoại trừ việc định dạng dữ liệu dưới dạng văn bản trước khi chuyển đổi tệp sang csv.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Khi tôi chạy điều này, nó chỉ chuyển đổi trang tính đầu tiên và bỏ qua các trang tính bổ sung trong sổ làm việc. Có cách nào để chỉnh sửa mã để bao gồm các trang tính bổ sung không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, bạn có thể thử mã bên dưới, nó sẽ lưu tất cả các trang tính trong thư mục vào csv riêng biệt. Nó không thể hoạt động sổ làm việc hiện tại.
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
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào Sunny
Với bất kỳ sửa đổi nào trong cùng một mã, tôi chỉ có thể trích xuất một trang tính có cùng tên trang tính trong tất cả các tệp không?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, Prashant, tôi không hiểu rõ câu hỏi của bạn. Để tôi đoán nhé: nếu có 1 workbook tên là book2 và book1, cả 1 đều chứa sheet tên là sheet1, bạn chỉ muốn lấy XNUMX sheet (sheetXNUMX) từ XNUMX workbook này, còn sheetXNUMX thì không cần trích xuất?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Không thể làm cho điều này hoạt động cho các tệp xls của tôi. Chúng là 97-03 trang tính và tôi hiện đang chạy phiên bản microsoft 365 hoạt động nhất. Khi tôi chạy mã, thư mục xuất hiện dưới dạng trống
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, tôi rất tiếc vì sự cố của bạn không xuất hiện lại trong phiên bản của tôi, tôi không có ý kiến ​​giúp bạn.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Cùng một vấn đề với tôi. Đang chạy office 365 mới nhất nhưng không có gì xảy ra sau khi thiết lập hai hộp thoại thư mục.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, Doc SJ, cảm ơn bạn đã nhắc nhở, tôi đã kiểm tra mã VBA, nó có một số vấn đề trong Office 365, bây giờ tôi đã cập nhật VBA, vui lòng thử lại.
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Bom Dia !!

muito top esse codigo, porem estou com o problemma abaixo

Tem como salvar em formato "CSV (differencedo por vírgulas) (* .csv)", độc ao executive esse código meus arquivos ficam com "," no formato que eu prepiso eles não ficam com essa vírgula
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
2019 버전 입니다.
게시글 그대로 실행 해 봤지만 아무것도 일어나지 않았습니다 ..
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, YOY, tôi đã kiểm tra VBA trong Professional Plus Excel 2019, nó hoạt động trơn tru và chính xác. Bạn có nên cung cấp cho tôi thêm thông tin chi tiết về các tệp của bạn, chẳng hạn như verison chi tiết, nội dung của tệp bạn muốn chuyển đổi?
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, Làm cách nào để thay đổi dấu phân cách?
Trong đoạn mã ở trên, dấu phân cách là dấu phẩy (,).
Xin cảm ơn: D
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào,
Tôi đang gặp một số vấn đề khi sử dụng tập lệnh
Tôi có thể thay đổi dấu phân cách trong tập lệnh không vì dấu phân cách trong đầu ra csv là dấu phẩy (,)
Tôi cần dấu phân cách không phải bằng dấu phẩy vì tập dữ liệu của tôi có rất nhiều dấu phẩy.


Cảm ơn bạn
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Ajouter Local: = True à cette ligne:
xObjWB.SaveAs Tên tệp: = xStrCSVFName, FileFormat: = xlCSV, Local: = True

Permet de prendre le séparateur de votre système, moi c'est point-virgule;
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào,

vor einem Jahr habe ich den VBA-Code ohne Probleme ausgeführt. Heute wollte ich es nochmal versuchen, leider gibt es einen Laufzeitfehler 1004 mit dem Hinweis
"Tính toán Die Methode 'ist für Objekt' _Application 'fehlgeschlagen."

Verweist auf folgende Zeile gỡ lỗi:
Application.Calculation = xlCalculationManual

Kann jemand weiterhelfen?

LG, Tối đa
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào,

Tôi đã nghĩ đến VBA-Code vor einem Jahr ohne Probleme angewendet. Jetzt funktioniert es nicht mehr.
Es gibt einen Laufzeitfehler 1004 mit dem Hinweis: "Tính toán Die Methode '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, Tối đa
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào, Gast, trước tiên hãy kiểm tra xem mã bạn đã sao chép có chính xác không, không có dấu "_" trong mã. Nếu bạn đã kiểm tra tất cả mã là chính xác, bạn có thể xóa dòng mã
Application.Calculation = xlCalculationManual rồi thử lại. Xin lưu ý rằng có hai dòng Application.Calculation = xlCalculationManual trong mã.
Không có bình luận nào được đăng ở đây
Tải thêm
Để lại ý kiến ​​của bạn
Đăng với tư cách khách
×
Đánh giá bài viết này:
0   Nhân vật
Các vị trí được đề xuất

Kết nối với chúng tôi

Bản quyền © 2009 - www.extendoffice.com. | Đã đăng ký Bản quyền. cung cấp bởi ExtendOffice. | BẢN ĐỒ CHI NHÁNH
Microsoft và logo Office là các nhãn hiệu hoặc nhãn hiệu đã đăng ký của Microsoft Corporation tại Hoa Kỳ và / hoặc các quốc gia khác.
Được bảo vệ bởi Sectigo SSL