Xuất nhiều sheet thành file excel
anh/chi có thể hươnhs dẫn viết 1 đoạn code, như sau:
– Em có 1 file excel gồm khá nhiều sheet
– E muốn chọn 1 số sheet nhất định (sheet2, sheet3 chẳng hạn)
– Sau đó xuất 2 sheet này sang 1 file excel mới, giữ nguyên hàm số (nếu có)
– Có thể cùng một lúc xuất ra nhiều file excel ở những folder khác nhau ko ạh
E xin cảm ơn và mong trợ giúp!
1. Xuất 2 sheets ra file mới code như sau: Sheets(Array("Sheet2", "Sheet3")).Copy
2. Có thể xuất ra nhiều file cho những folder khác nhau
Máy tính ở cq có phân các thư mục cá nhân. Sau khi làm báo cáo xong e muốn export cái là các folder này đều có file báo cáo.. đấy là mục đích của đoạn cốt ạh
Cơ bản là thế này, thử từng số 18, 50 ,51,52 để biết nó là cái gì
Giả định thư mục BAOCAO đang có tại ổ D, file mới tạo ra có tên là Test
Sub CreateNewFile()
Dim path As String, NewFileName As String
path = "D:BAOCAO"
NewFileName = "Test"
Sheets(Array("Sheet1", "Sheet2")).Copy
With ActiveWorkbook
.SaveAs path & NewFileName, 18 '50,51,52
' ________ Lua chon tham so ______________
' 18 xuat ra XLS 97 – 2003
' 50 xuat ra XLSB
' 51 xuat ra XLSX
' 52 xuat ra XLSM
.Close
End With
End Sub
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học
theo kiểu này
Thử chạy code này
Giả sử bạn lưu các đường dẫn cần copy tới từ ô A1 đến ô A5 của sheet1:
Sub CreateNewFile()
Dim path As String, NewFileName As String
path = "D:BAOCAO"
NewFileName = "Test"
Application.CopyObjectsWithCells = False
Sheets(Array("Sheet1", "Sheet2")).Copy
With ActiveWorkbook
.SaveAs path & NewFileName, 18 '50,51,52
.Close
End With
Application.CopyObjectsWithCells = True
End Sub
Với code này mà kêu record macro thì chắc không khả thi rồi.
Chẳng có gì là không thể.
Muốn xuất module ra thì
Application.VBE.ActiveVBProject.VBComponents("Module1").Export "AddModule.bas"
Muốn lấy vào thì
Application.VBE.ActiveVBProject.VBComponents.Import "AddModule.bas"
Bạn phải vào Macro Security, tìm mục macro setting rồi check trong mục Trust Access to The VBA Project
Nếu muốn tự động luôn thì thêm mấy dòng lệnh này vào đầu code
Dim regKey As String
regKey = "HKEY_CURRENT_USERSoftwareMicrosoftOffice" & Application.Version & "ExcelSecurityAccessVBOM"
CreateObject("WScript.Shell").RegWrite regKey, 1, "REG_DWORD"
Application.VBE.ActiveVBProject.VBComponents.Import "AddModule.bas"
Kill "AddModule.bas"
Đơn giản nhất là thay số 50 thành số 51 là được rồi
Sub DeleteAllVBACode()
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Set VBProj = ActiveWorkbook.VBProject
For Each VBComp In VBProj.VBComponents
If VBComp.Type = vbext_ct_Document Then
Set CodeMod = VBComp.CodeModule
CodeMod.DeleteLines 1, CodeMod.CountOfLines
Else
VBProj.VBComponents.Remove VBComp
End If
Next VBComp
End Sub