NguyenDang95
Senior Member
Chào mọi người. Trong quá trình làm việc, một số người dùng muốn tách từng sheet trong một file Excel thành một file riêng lẻ để phục vụ nhiều mục đích khác nhau. Nếu file có vài ba sheet cần tách thì có thể thao tác thủ công, nhưng nếu có vài chục sheet cần tách thì lúc này macro sẽ giúp chúng ta giải quyết việc này một cách nhanh chóng.
Macro dưới đây sẽ:
Ngoài cách viết macro và chạy trực tiếp trên file Excel, chúng ta có thể viết script VBScript để thao tác với file Excel.
Soạn thảo trong Notepad, lưu lại với phần mở rộng ".vbs".
Kết quả:
Macro dưới đây sẽ:
- Đọc từng sheet trong file Excel cần thao tác.
- Dùng phương thức Sheets.Copy sẽ khiến Excel tạo một workbook riêng chứa sheet đang đọc
- Lưu workbook mới vừa tạo với tên sheet đang đọc, sau đó đóng workbook mới đó
Code:
Option Explicit
Private Sub ExportMultipleSheets()
Dim objWb As Excel.Workbook
Dim objNewWb As Excel.Workbook
Dim objSheets As Excel.Sheets
Dim objSheet As Excel.Worksheet
Dim objNewSheet As Excel.Worksheet
Dim strExportFolder As String
Dim strSheetName As String
Dim lngSheetCount As Long
strExportFolder = "C:\ExportFolder\" 'Thư mục xuất file ra
lngSheetCount = 0
Set objWb = ActiveWorkbook
Set objSheets = objWb.Sheets
For Each objSheet In objSheets
strSheetName = strExportFolder & objSheet.Name & ".xlsx"
objSheet.Copy
Set objNewWb = ActiveWorkbook
Set objNewSheet = objNewWb.ActiveSheet
objNewSheet.SaveAs Filename:=strSheetName, FileFormat:=xlOpenXMLWorkbook
objNewWb.Close SaveChanges:=False
strSheetName = ""
lngSheetCount = lngSheetCount + 1
Next objSheet
MsgBox lngSheetCount & " sheet(s) exported successfully.", vbInformation, "Export Complete"
Set objSheets = Nothing
Set objSheet = Nothing
Set objNewSheet = Nothing
Set objWb = Nothing
Set objNewWb = Nothing
End Sub
Ngoài cách viết macro và chạy trực tiếp trên file Excel, chúng ta có thể viết script VBScript để thao tác với file Excel.
Soạn thảo trong Notepad, lưu lại với phần mở rộng ".vbs".
Code:
Option Explicit
Dim objXl 'As Excel.Application
Dim objWb 'As Excel.Workbook
Dim objNewWb 'As Excel.Workbook
Dim objSheets 'As Excel.Sheets
Dim objSheet 'As Excel.Worksheet
Dim objNewSheet 'As Excel.Worksheet
Dim strExportFolder, strSheetName, strWbName 'As String
Dim lngSheetCount 'As Long
Const xlOpenXMLWorkbook = 51
strExportFolder = "C:\ExportFolder\"
strWbName = strExportFolder & "Book1.xlsm"
lngSheetCount = 0
Set objXl = CreateObject("Excel.Application")
objXl.Visible = True
Set objWb = objXl.Workbooks.Open(strWbName)
Set objSheets = objWb.Sheets
For Each objSheet In objSheets
strSheetName = strExportFolder & objSheet.Name & ".xlsx"
objSheet.Copy
Set objNewWb = objXl.ActiveWorkbook
Set objNewSheet = objNewWb.ActiveSheet
objNewSheet.SaveAs strSheetName, xlOpenXMLWorkbook
objNewWb.Close False
strSheetName = ""
lngSheetCount = lngSheetCount + 1
Next
objXl.Quit
MsgBox lngSheetCount & " sheet(s) exported successfully.", vbInformation, "Export Complete"
Set objXl = Nothing
Set objSheets = Nothing
Set objSheet = Nothing
Set objNewSheet = Nothing
Set objWb = Nothing
Set objNewWb = Nothing
Kết quả:
Last edited: