cuonghoa176
Hỏi nhiều
- Tham gia
- 31/1/11
- Bài viết
- 169
- Được thích
- 23
- Giới tính
- Nam
- Nghề nghiệp
- Giáo viên THCS
Cho code vào 1 module và chạy thử xem sao.Xin các cao thủ GPE code:
Yêu cầu:
- Tách hoặc copy Sheet ra từng file, lấy tên Sheet làm tên file.
- Giữ nguyên mọi thuộc tính của Sheet nguồn, kể cả công thức, name, Pass...
Sub tachsheet()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim sh As Worksheet
For Each sh In Worksheets
sh.Copy
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & sh.Name, 51
ActiveWorkbook.Close
Next
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Cho code vào 1 module và chạy thử xem sao.
Các file mới sẽ lưu trong cùng thư mục với file gốc
PHP:Sub tachsheet() Application.ScreenUpdating = False Application.DisplayAlerts = False Dim sh As Worksheet For Each sh In Worksheets sh.Copy ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & sh.Name, 51 ActiveWorkbook.Close Next Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub
Chắc là không thể nhanh hơn được nữa đâu vì khi code làm việc trực tiếp trên sheet thì tốc độ sẽ như thế. Nhưng so với thủ công thì cũng nhanh lắm rồi mà. Cũng có thể có cách khác nhanh hơn mà mình chưa biết. Thử đợi các anh chị khác tham gia xem sao.Cám ơn anh nhiều.
Nếu file khoảng 50 sheet trở lên thì chạy hơn chậm anh ơi, có cách nào set cho code chạy nhanh hơn nữa không anh.
Thật sự không hiểu rõ ý của bạn. Viết tạm thế nàyNhân tiện Bac Hai giúp e tí chút, Khi tách Sheet "SO DIEM":
- Tên Sheet mới sinh ra sẽ theo ô E9 tại sheet "Menu";
- Công thức trong khoảng AE6:AG50 không mất.
E cảm ơn Bác!
code:
Macro4 Macro'
'
Sheets("SO DIEM").Select
Sheets("SO DIEM").Copy After:=Sheets(3)
Cells.Select
Range("AH4").Activate
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("E1").Select
Sheets("Menu").Select
Range("E9").Select
End Sub
Sub copy_sheet()
Sheets("SO DIEM").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = Sheets("Menu").[E9]
End Sub
Trong đoạn code của anh QuangHai, bạn sửa [E9] thành [E7]Vậy bác ơi:
- Chọn Môn; lớp rồi tách thành 1 sheet mới. Như trên sẽ thành sheet "SO DIEM (2),(3)...
Giờ sửa sao cho mỗi khi tách sheet ra, tên sheet sẽ theo cells E7 (không fải E9). Kết quả, khi copy sheet mới sẽ là "Văn", "Toán", "Lý"...
File:
https://drive.google.com/file/d/0ByrRyDPlHTh9YW1qeVlCZ2tzQmc/edit?usp=sharing
Sub copy_sheet()
Sheets("SO DIEM").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = Sheets("Menu").[E9]
End Sub
Sub copy_sheet()
Sheets("SO DIEM").Copy after:=Sheets(Sheets.Count)
ActiveSheet.Name = Sheets("Menu").[E7]
End Sub