Tách 1 sheet thành 1 file excel

Trên một file Excel bạn có thể tạo nhiều sheet để đễ theo dõi và chuyển đổi giữa các nội dung liên quan tới nhau. Nhưng nhiều sheet cũng làm tăng dung lượng và khiến mở file lâu hơn, nhất là khi bạn sử dụng thêm các add ins hay các code macro VBA. Giải pháp lúc này là bạn nên tách các sheet thành từng file Excel riêng biệt. Nhờ vậy nội dung trong sheet vẫn được giữ nguyên, tên sheet trở thành tên của từng file và công thức sử dụng trong sheet không bị thay đổi hay lỗi kết quả. Bài viết dưới đây sẽ hướng dẫn bạn đọc cách tách từng sheet trong Excel thành các file riêng biệt nhé.

Đọc dữ liệu số thành chữ trong Excel
15 hàm cơ bản được dùng nhiều nhất trong Excel
38 phím tắt đơn giản cực hữu ích trong excel

Ví dụ ta có file Excel chứa các sheet như hình dưới. Yêu cầu cần tách các sheet đó thành từng file Excel riêng biệt. Các bạn hãy làm theo các bước dưới đây để tách sheet nhé.

Bước 1: Để tách sheet thành từng file Excel riêng biệt, đầu tiên thì các bạn cần chọn thẻ Developer trên thanh công cụ. Sau đó các bạn chọn Visual Basic tại mục Code. Hoặc các bạn có thể sử dụng tổ hợp phím tắt Alt + F11 để mở nhanh cửa sổ VBA.

Bước 2: Lúc này, cửa sổ Microsoft Visual Basic for Applications hiện ra. Các bạn chọn thẻ Insert trên thanh công cụ. Thanh cuộn hiện ra thì các bạn chọn mục Module.

Bước 3: Lúc này, hộp thoại Module hiện ra. Các bạn sao chép mã code dưới đây vào hộp thoại đó.

Sub Splitbook() 'Updateby20140612 Dim xPath As String xPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False For Each xWs In ThisWorkbook.Sheets xWs.Copy Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & xWs.Name & ".xls" Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

Sau đó các bạn nhấn vào biểu tượng của Run ở trên thanh công cụ để chạy mã code này.

Bước 4: Sau khi chạy mã code, kết quả ta sẽ thu được là mỗi sheet đã được tách riêng ra thành một file Excel riêng biệt mà vẫn giữ nguyên dữ liệu.

Khi các bạn mở những file Excel tách riêng từng sheet đó ra thì sẽ có thông báo như hình dưới hiện lên. Các bạn chỉ cần nhấn Yes là có thể chỉnh sửa dữ liệu một cách bình thường.

Như vậy, bài viết trên đã hướng dẫn các bạn cách tách sheet thành từng file Excel riêng biệt. Hy vọng bài viết sẽ hữu ích với các bạn trong quá trình làm việc. Chúc các bạn thành công!

Làm xuất hiện số 0 trước số điện thoại di động

  • #2

Mình có 1 file excel gồm nhiều sheet. Nay muốn xuất 1 sheet thành 1 file riêng biệt, có tên là tên của sheet đó thì phải làm thế nào. Google mấy ngày rùi hok ra. Các bác giúp em với.

Bạn đặt con trỏ vào sheet cần tạo. Bấm phải chuột -> Chọn Move or copy -> Trong ô To book chọn new book -> OK

  • #3

Mình có 1 file excel gồm nhiều sheet. Nay muốn xuất 1 sheet thành 1 file riêng biệt, có tên là tên của sheet đó thì phải làm thế nào. Google mấy ngày rùi hok ra. Các bác giúp em với.

Bạn dùng code sau nhé:

Mã:

Sub LuuFile() Dim strPath As String Dim sh As Worksheet Application.ScreenUpdating = False strPath = ThisWorkbook.Path For Each sh In ThisWorkbook.Worksheets sh.Copy Application.Workbooks(Application.Workbooks.Count).Close _ True, strPath & "\ Ten Sheet " & sh.Name Next Application.ScreenUpdating = True End Sub

P/S: Nó sẽ lưu vào chung với thư mục của file gốc nhé.

  • #4

Tình hình là sau khi thêm đoạn code này vào. Cứ mở excel là nó tạo 1 file mới có tên là tên sheet sheet 1. :-??. Xóa hết macro cũng không được. (

  • #5

Không biết xử lý vụ này thế nào. Giống bị dính virus quá. huhu

  • #6

Không biết xử lý vụ này thế nào. Giống bị dính virus quá. huhu

Bạn chép code vào đâu, Bạn gửi file xem thử nhé

  • #7

Theo tôi Bạn nên dùng cách của MinhCong là tốt nhất
Tôi đã dùng như thế nhiều rồi
Chúc thành công (mở sheet cần chuyển sang file-chuột phải-chọn Move or copy- .......)

  • #8

Bạn nhấn Alt+F4 rồi paste Code của Dom và.Bạn quay ra Excel chọn thanh công cụ của Form, vẽ nó một đường và chọn Luu File nhấn một phát vào nút lệnh đó là nó cho nhiều Sheet chung trong một Folder.Cái này mà khi xuất sang 1 File mà cho các số liệu còn y nguyên thì quý biết mấy.Nhưng ô có công thức đều bị lỗi #REF hết.Buồn ghê.

Lần chỉnh sửa cuối: 1/5/10

  • #9

Bạn dùng code sau nhé:

Mã:

Sub LuuFile() Dim strPath As String Dim sh As Worksheet Application.ScreenUpdating = False strPath = ThisWorkbook.Path For Each sh In ThisWorkbook.Worksheets sh.Copy Application.Workbooks(Application.Workbooks.Count).Close _ True, strPath & "\ Ten Sheet " & sh.Name Next Application.ScreenUpdating = True End Sub

P/S: Nó sẽ lưu vào chung với thư mục của file gốc nhé.

Code này thì chuyển từng sheet thành từng file (workbook có bao nhiêu sheet thì thành bấy nhiêu file). Nhưng nếu chỉ muốn chuyển duy nhất 1 sheet cụ thể (ví dụ Sheet 1) thành 1 file thì phải sửa như thế nào? Cám ơn các anh chị.

  • #10

Code này thì chuyển từng sheet thành từng file (workbook có bao nhiêu sheet thì thành bấy nhiêu file). Nhưng nếu chỉ muốn chuyển duy nhất 1 sheet cụ thể (ví dụ Sheet 1) thành 1 file thì phải sửa như thế nào? Cám ơn các anh chị.

Bỏ vòng lặp đi là được:

Mã:

Sub LuuFile() With Application .ScreenUpdating = False .DisplayAlerts = False Sheets("sheet1").Copy ActiveWorkbook.Close True, ThisWorkbook.Path & "\Sheet1" .DisplayAlerts = True .ScreenUpdating = True End With End Sub

  • #11

Bỏ vòng lặp đi là được:

Mã:

Sub LuuFile() With Application .ScreenUpdating = False .DisplayAlerts = False Sheets("sheet1").Copy ActiveWorkbook.Close True, ThisWorkbook.Path & "\Sheet1" .DisplayAlerts = True .ScreenUpdating = True End With End Sub

Code của tác giả rất gọn và đã đáp ứng yêu cầu của chủ topic. Em xin hỏi thêm mấy câu hỏi nâng cao để học hỏi
Code trên tạo file có tên mặc định là sheet1. Xin tác giả bổ sung cách để:
+ Tên file thêm ngày tháng hiện hành (VD: BC_15.06.xls)
+ Nếu sử dụng Code 2 lần sheet sau tự động đè (overwrite)sheet trước. Cần có cảnh báo hoặc tự động thêm ký tự phụ vào tên file mới sinh
+ Code để đổi tên sheet khi sheet được chuyển sang file? mới ?

  • #12

Code của tác giả rất gọn và đã đáp ứng yêu cầu của chủ topic. Em xin hỏi thêm mấy câu hỏi nâng cao để học hỏi
Code trên tạo file có tên mặc định là sheet1. Xin tác giả bổ sung cách để:
+ Tên file thêm ngày tháng hiện hành (VD: BC_15.06.xls)
+ Nếu sử dụng Code 2 lần sheet sau tự động đè (overwrite)sheet trước. Cần có cảnh báo hoặc tự động thêm ký tự phụ vào tên file mới sinh
+ Code để đổi tên sheet khi sheet được chuyển sang file? mới ?

Dùng code sau:

Mã:

Sub LuuFile() With Application .ScreenUpdating = False ' .DisplayAlerts = False Sheets("sheet1").Copy ActiveSheet.Name = "TenSheetMoi" ActiveWorkbook.Close True, ThisWorkbook.Path & "\BC_" & Format(Now(), "dd-mm") ' .DisplayAlerts = True .ScreenUpdating = True End With End Sub

  • #13

Dùng code sau:

Mã:

Sub LuuFile() With Application .ScreenUpdating = False ' .DisplayAlerts = False Sheets("sheet1").Copy ActiveSheet.Name = "TenSheetMoi" ActiveWorkbook.Close True, ThisWorkbook.Path & "\BC_" & Format(Now(), "dd-mm") ' .DisplayAlerts = True .ScreenUpdating = True End With End Sub

Xin phép dùng topic cũ này để hỏi về cùng 1 chủ đề lưu sheet
Mình muốn khi chạy code hiện ra bảng chọn đường dẫn và ghi tên file giống chức năng save của MS excel, chỉ khác ở đây là lưu sheet hiện hành ra thành file riêng. (Còn chức năng save của MS excel thì lưu nguyên file excel)
Nhờ các bạn giúp.
Mình cảm ơn!

  • CT.xlsx

    30.9 KB · Đọc: 42

Lần chỉnh sửa cuối: 23/5/15

  • #14

Xin phép dùng topic cũ này để hỏi về cùng 1 chủ đề lưu sheet
Mình muốn khi chạy code hiện ra bảng chọn đường dẫn và ghi tên file giống chức năng save của MS excel, chỉ khác ở đây là lưu sheet hiện hành ra thành file riêng. (Còn chức năng save của MS excel thì lưu nguyên file excel)
Nhờ các bạn giúp.
Mình cảm ơn!

Bạn đưa File giả lập lên đây.

  • #15

Bạn đưa File giả lập lên đây.

Mình gửi file đính kèm

  • CT.xlsx

    30.9 KB · Đọc: 42

  • #16

Thay vì hiện bảng chọn đường dẫn tôi sẽ lưu luôn sheet hiện hành thành 1 File vào đường dẫn chỉ định có được không?

  • #17

Thay vì hiện bảng chọn đường dẫn tôi sẽ lưu luôn sheet hiện hành thành 1 File vào đường dẫn chỉ định có được không?

Không thể chọn đường dẫn vậy nhờ bạn giúp tạo 1 folder cùng đường dẫn với file chính và lấy tên folder là tên file chính (file gốc chứa nhiều sheet) sau đó lưu sheet trong folder đó.
Đối với các sheet lưu sau mà cùng nằm trong file excel chính, nếu kiểm tra có folder rồi thì ko cần tạo folder nữa mà lưu thẳng vào folder đó luôn.
Còn tên file có thay đổi được không vậy bạn?
Không biết mình yêu cầu vậy có khó quá không, mong các bạn thông cảm!
Mình cảm ơn nhiều!

  • #18

Còn tên file có thay đổi được không vậy bạn?
Mình cảm ơn nhiều!

Muốn thay đổi thì bạn cứ thay đổi thôi! Không ản h hưởng gì cả?

  • #19

Muốn thay đổi thì bạn cứ thay đổi thôi! Không ản h hưởng gì cả?

Mình cảm ơn bạn trước!

  • #20

Không thể chọn đường dẫn vậy nhờ bạn giúp tạo 1 folder cùng đường dẫn với file chính và lấy tên folder là tên file chính (file gốc chứa nhiều sheet) sau đó lưu sheet trong folder đó.
Đối với các sheet lưu sau mà cùng nằm trong file excel chính, nếu kiểm tra có folder rồi thì ko cần tạo folder nữa mà lưu thẳng vào folder đó luôn.
Còn tên file có thay đổi được không vậy bạn?
Không biết mình yêu cầu vậy có khó quá không, mong các bạn thông cảm!
Mình cảm ơn nhiều!

Của bạn đây:
+ Cách dùng: Tại sheet hiện hành bạn bấm tổ hợp phím Ctrl+Shift+A để chạy code lưu Sheet hiện hành. Tôi tạo thư mục có tên là "CT" trong ổ D("D:\CT") các sheet hiện hành được lưu vào Folder này với tên File chính là tên của các Sheet đó!

  • CT.rar

    34.3 KB · Đọc: 172

Lần chỉnh sửa cuối: 23/5/15

Chủ đề