Cách Lưu Từng Sheet Trong Excel, Hướng Dẫn Sao Chép, Di Chuyển Sheet Trong Excel

Mặc định sẽ không có cách nào để bạn tách riêng các sheets trong Excel thành các file riêng biệt. Tuy nhiên dưới đây lingocard.vn sẽ Hướng dẫn cách tách từng sheets trong file Excel thành các tập tin riêng thông qua mã VBA vô cùng đơn giản. 

Tách từng sheets thành các tập tin Excel riêng biệt

Ví dụ bạn có một file Excel như được hiển thị bên dưới, giờ muốn tách mỗi một sheets thành một file Excel riêng biệt cho mỗi tháng. 

*

Để thực hiện, bạn có thể sử dụng đoạn mã VBA bên dưới:

“Code Created by lingocard.vnSub SplitEachWorksheet()Dim FPath As StringFPath = Application.ActiveWorkbook.PathApplication.ScreenUpdating = FalseApplication.DisplayAlerts = FalseFor Each ws In ThisWorkbook.Sheets ws.Copy Application.ActiveWorkbook.SaveAs Filename:=FPath & “” & ws.Name & “.xlsx” Application.ActiveWorkbook.Close FalseNextApplication.DisplayAlerts = TrueApplication.ScreenUpdating = TrueEnd Sub

Có một số điều bạn cần đảm bảo trước khi sử dụng mã VBA ở trên:

– Tạo một thư mục nơi mà bạn muốn xuất tất cả các sheets sau khi tách ra.

Đang xem: Cách lưu từng sheet trong excel

– Lưu tập tin Excel chính (có tất cả các sheets mà bạn muốn tách riêng các sheets) trong thư mục này.

Khi bạn đã hoàn thành việc này, sau đó bạn có thể chèn mã VBA ở trên vào tập tin và chạy mã.

Đoạn mã trên được viết theo cách mà nó sẽ chọn vị trí của thư mục bằng cách sử dụng đường dẫn của tập tin (trong đó mã được chạy). Đây là lý do tại sao điều quan trọng là phải lưu tập tin trong thư mục trước và sau đó sử dụng mã này.

Mã VBA hoạt động như thế nào?

Đoạn mã trên sử dụng một vòng lặp For Next đơn giản đi qua từng sheets, tạo một bản sao của sheets trong file Excel, rồi lưu file Excel này trong thư mục được chỉ định.

Dưới đây là các bước để chèn mã VBA này trong file Excel (các bước này sẽ giống nhau đối với tất cả các phương pháp khác được sử dụng trong bài này):

Chèn mã này ở đâu?

Dưới đây là các bước để chèn mã trong Visual Basic Editor:

Bước 1: Trong file Excel cần chèn mã, truy cập vào tab Developer.

*

Bước 2: Trong nhóm Code, bấm nút Visual Basic ở góc trên cùng bên trái. Thao tác này sẽ mở trình soạn thảo VB (bạn cũng có thể sử dụng tổ hợp phím tắt – ALT + F11).

*

Bước 3: Trong cửa sổ VB Editor hiển thị, kích chuột phải vào bất kỳ đối tượng nào của sổ làm việc mà bạn đang làm việc.

*

Bước 4: Di con trỏ qua tùy chọn Insert.

Bước 5: Chọn tùy chọn Module. Thao tác này sẽ chèn một module mới

*

Bước 6: Bấm đúp vào đối tượng module mới sẽ mở cửa sổ mã cho module này.

Bước 7: Sao chép mã VBA được cung cấp ở trên và dán vào cửa sổ mã module này.

*

Bước 8: Chọn bất kỳ dòng nào trong mã và bấm vào nút Play màu xanh lá cây trên thanh công cụ để chạy mã macro VBA.

Xem thêm: đoạn văn nghị luận về tầm quan trọng của sách

*

Các bước trên sẽ ngay lập tức chia các sheets thành các tập tin Excel riêng biệt và lưu chúng. Chỉ mất một giây nếu bạn có ít sheets, nhưng sẽ mất một chút thời gian nếu file Excel của bạn có nhiều sheets riêng lẻ.

Tên của mỗi tập tin Excel được lưu sẽ giống với tên sheets mà nó có trong tập tin chính.

*

Vì đã đặt mã VBA trong file Excel nên bạn cần lưu mã này với định dạng .XLSM (là định dạng hỗ trợ macro). Điều này sẽ đảm bảo macro được lưu và hoạt động khi bạn mở tập tin này sau này.

Lưu ý: Bạn có thể sử dụng các dòng mã Application.ScreenUpdating = False và Application.DisplayAlerts = False nếu muốn mọi thứ xảy ra trong nền mà không có thông báo hay bất kỳ điều gì đang xảy ra trên màn hình của file Excel đang được xử lý.

Cách tốt nhất, bạn nên tạo một bản sao lưu của file Excel gốc (có các sheets mà bạn muốn tách). Điều này sẽ đảm bảo bạn không bị mất dữ liệu trong trường hợp có bất kỳ sự cố nào xảy ra. 

Tách từng sheets và lưu dưới dạng PDF riêng biệt

Trong trường hợp bạn muốn tách các sheets trong một file Excel và lưu dưới định dạng tập tin PDF thay vì tệp Excel, bạn có thể sử dụng mã dưới đây:

“Code Created by lingocard.vnSub SplitEachWorksheet()Dim FPath As StringFPath = Application.ActiveWorkbook.PathApplication.ScreenUpdating = FalseApplication.DisplayAlerts = FalseFor Each ws In ThisWorkbook.Sheets ws.Copy Application.ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=FPath & “” & ws.Name & “.xlsx” Application.ActiveWorkbook.Close FalseNextApplication.DisplayAlerts = TrueApplication.ScreenUpdating = TrueEnd Sub

Những điều bạn cần đảm bảo trước khi sử dụng mã này:

– Tạo một thư mục nơi mà bạn muốn xuất tất cả các sheets sau khi tách ra.

– Lưu tập tin Excel chính (có tất cả các sheets mà bạn muốn tách riêng các sheets) trong thư mục này.

– Đoạn mã trên sẽ chia từng sheets trong file Excel gốc và lưu dưới dạng PDF trong cùng thư mục nơi bạn đã file Excel ban đầu.

Chỉ tách những sheets có chứa từ/cụm từ thành các file Excel riêng 

Trong trường hợp bạn có nhiều sheets trong một file Excel và chỉ muốn tách những sheets có văn bản cụ thể trong đó, bạn cũng có thể thực hiện điều đó.

Ví dụ: Bạn có một file Excel trong đó có dữ liệu trong nhiều năm và mỗi sheets trong file có số năm làm tiền tố. 

Bây giờ, giả sử bạn muốn tách tất cả các sheets của năm 2020 và lưu thành các tập tin Excel riêng biệt. Để thực hiện việc này, bạn cần phải kiểm tra bằng cách nào đó tên của mỗi sheets và chỉ những sheets có số 2020 mới được tách và lưu, các sheets còn lại sẽ giữ nguyên.

Điều này có thể được thực hiện bằng cách sử dụng mã macro VBA sau :

“Code Created by lingocard.vnSub SplitEachWorksheet()Dim FPath As StringDim TexttoFind As StringTexttoFind = “2020”FPath = Application.ActiveWorkbook.PathApplication.ScreenUpdating = FalseApplication.DisplayAlerts = FalseFor Each ws In ThisWorkbook.Sheets If InStr(1, ws.Name, TexttoFind, vbBinaryCompare) 0 Then ws.Copy Application.ActiveWorkbook.SaveAs Filename:=FPath & “” & ws.Name & “.xlsx” Application.ActiveWorkbook.Close False End IfNextApplication.DisplayAlerts = TrueApplication.ScreenUpdating = TrueEnd Sub

Trong đoạn mã trên, chúng ta đã sử dụng một biến TexttoFind được gán cho “2020” ngay từ đầu. Mã VBA sau đó sử dụng vòng lặp For Next trong VBA để đi qua từng sheets và sau đó kiểm tra tên của mỗi sheets thông qua hàm INSTR. Hàm này sẽ kiểm tra xem tên các sheets có từ 2020 hay không. 

Nếu có, nó sẽ trả về số vị trí nơi tìm thấy văn bản này (trong trường hợp này là năm 2020). Nếu không tìm thấy văn bản chúng ta đang tìm kiếm, nó sẽ trả về 0.

Xem thêm: Giải Vở Bài Tập Toán Lớp 4 Tập 2 Bài 117 : Luyện Tập, Bài 117 : Luyện Tập

Điều này được sử dụng với điều kiện IF Then. Do đó nếu tên sheets có chuỗi văn bản 2020, nó sẽ được tách và lưu thành một tập tin riêng biệt. Nếu không có chuỗi văn bản này, điều kiện IF sẽ không được đáp ứng và không có gì xảy ra.

CÓ THỂ BẠN CŨNG QUAN TÂMHướng dẫn cách sử dụng Hàm IF trong Excel đơn giản dễ hiểuHướng dẫn cách thao tác trình bày định dạng bảng dữ liệu trong Excel chuẩn nhấtHướng dẫn cách tạo bảng dữ liệu tiêu chuẩn trên Excel

Xem thêm bài viết thuộc chuyên mục: Excel