Thử rồi cho mình biết kết quả nhen.Mình nhờ các cao thủ chỉ giúp: Mình có 1 file có nhiều sheet. trong mỗi sheet lại có công thức và đã định vùng cần in (tức là đã Set printer area. Mình cần tạo một đoạn code gắn với 1 nút sao cho: Nhấn nút lần 1 nó sẽ chuyển sheet hiện hành (chỉ lấy phần đã set printer area) thành 1 file mới có tên Phongthi và sheet đó có tên P1 (lưu ý: chỉ lấy giá trị chứ không lấy công thức, giữ nguyên Form). Khi nhấn nút lần 2 thì tương tự sẽ tạo thêm 1 sheet thứ 2 có tên P2 cùng trên file Phongthi đã tạo ở lần nhấn nút 1, nhấn nút lần 3, 4, 5,.... tương tự thành P3, P4, .....
Xin cảm ơn rất nhiều
Sub TaoFileMoi()
Dim ws As Worksheet
Dim newWorkbook As Workbook
Dim newSheet As Worksheet
Dim filePath As String
Dim sheetName As String
Dim sheetCounter As Integer
' Đường dẫn để lưu file mới
filePath = ThisWorkbook.Path & "\Phongthi.xlsx"
' Kiểm tra xem file đã tồn tại hay chưa
If Dir(filePath) = "" Then
' Nếu chưa tồn tại, tạo file mới
Set newWorkbook = Workbooks.Add
newWorkbook.SaveAs Filename:=filePath
newWorkbook.Close SaveChanges:=True
End If
' Mở file đã tồn tại hoặc vừa được tạo
Workbooks.Open Filename:=filePath
Set newWorkbook = Workbooks("Phongthi.xlsx")
' Đếm số sheet hiện có trong file Phongthi để đặt tên cho sheet mới
sheetCounter = newWorkbook.Sheets.Count + 1
' Tạo tên sheet mới
sheetName = "P" & sheetCounter
' Copy vùng đã set print area từ sheet hiện hành sang file mới
Set ws = ThisWorkbook.ActiveSheet
Set newSheet = newWorkbook.Sheets.Add(After:=newWorkbook.Sheets(newWorkbook.Sheets.Count))
newSheet.Name = sheetName
ws.Range(ws.PageSetup.PrintArea).Copy
newSheet.Range("A1").PasteSpecial Paste:=xlPasteValues
newSheet.Range("A1").PasteSpecial Paste:=xlPasteFormats
Application.CutCopyMode = False
' Lưu và đóng file
newWorkbook.Close SaveChanges:=True
End Sub
Nó chỉ tạo ra được một file có tên là Phongthi, trong file đó chỉ có 2 sheet có tên: sheet1 và P2. Các sheet này đều trống rỗng. Khi chạy lần 2 thì nó hỏi có thay thế file đã tạo ở lần 1 hay không? Nếu chọn OK thì nó thay luôn và ile tạo ra vẫn là Phongthi và vẫn có 2 sheet: Sheet1 và P2, Các sheet này vẫn trống rỗng như lần 1. Bạn có thể giúp mình xem lại được không?Thử rồi cho mình biết kết quả nhen.
Mã:Sub TaoFileMoi() Dim ws As Worksheet Dim newWorkbook As Workbook Dim newSheet As Worksheet Dim filePath As String Dim sheetName As String Dim sheetCounter As Integer ' Đường dẫn để lưu file mới filePath = ThisWorkbook.Path & "\Phongthi.xlsx" ' Kiểm tra xem file đã tồn tại hay chưa If Dir(filePath) = "" Then ' Nếu chưa tồn tại, tạo file mới Set newWorkbook = Workbooks.Add newWorkbook.SaveAs Filename:=filePath newWorkbook.Close SaveChanges:=True End If ' Mở file đã tồn tại hoặc vừa được tạo Workbooks.Open Filename:=filePath Set newWorkbook = Workbooks("Phongthi.xlsx") ' Đếm số sheet hiện có trong file Phongthi để đặt tên cho sheet mới sheetCounter = newWorkbook.Sheets.Count + 1 ' Tạo tên sheet mới sheetName = "P" & sheetCounter ' Copy vùng đã set print area từ sheet hiện hành sang file mới Set ws = ThisWorkbook.ActiveSheet Set newSheet = newWorkbook.Sheets.Add(After:=newWorkbook.Sheets(newWorkbook.Sheets.Count)) newSheet.Name = sheetName ws.Range(ws.PageSetup.PrintArea).Copy newSheet.Range("A1").PasteSpecial Paste:=xlPasteValues newSheet.Range("A1").PasteSpecial Paste:=xlPasteFormats Application.CutCopyMode = False ' Lưu và đóng file newWorkbook.Close SaveChanges:=True End Sub
Bạn nên đọc kỹ yêu cầu bài #60 nhen.Nó chỉ tạo ra được một file có tên là Phongthi, trong file đó chỉ có 2 sheet có tên: sheet1 và P2. Các sheet này đều trống rỗng. Khi chạy lần 2 thì nó hỏi có thay thế file đã tạo ở lần 1 hay không? Nếu chọn OK thì nó thay luôn và ile tạo ra vẫn là Phongthi và vẫn có 2 sheet: Sheet1 và P2, Các sheet này vẫn trống rỗng như lần 1. Bạn có thể giúp mình xem lại được không?