Xin code định dạng (căn lề) một lần nhiều trang tính có cấu trúc giống nhau

Liên hệ QC

HUONGHCKT

Zalo 0986997214
Tham gia
30/8/12
Bài viết
1,707
Được thích
3,052
Donate (Paypal)
Donate
Donate (Momo)
Donate
Giới tính
Nam
Xin chào các anh chị em trong gia đình Giải pháp Excel.
Tôi có một bài muốn nhờ các anh chị em xem và hướng dẫn cho tôi
Hàng ngày tôi phải tải từ trên phần mềm xuống 1 file( chỉ có 1 sh), Cuối tháng tôi phải tổng hợp lại 30-31 cái file kia (tức 31 Sh có kết cấu giống nhau nằm ở 31 cái file), thành một file có 31 sh (mỗi Sh 1 ngày). Phần tìm kiếm theo tên file, lấy dữ liệu, tổng hợp về 1 file (xử lý số liệu,... định dạng lại các cột...), tôi đã làm được và code chạy ổn định, tốc độ cũng tạm chấp nhận được.
Xong có một phần là định dạng sheet (căn lề trái, phải, trên, dưới, xem theo chiều ngang) để chuẩn bị cho công đoạn in thì code chạy rất chậm(Đoạn code này tôi dùng Record Macro ghi lại).

Vậy muốn nhờ các anh chị em xem bài chỉ cho tôi biết tại sao code chạy chậm hoặc có cách gì để code chạy nhanh hơn thì chỉ giúp tôi với (nếu có thể sửa code cho tôi được thì càng tốt).
Xin trân trọng cảm ơn!
Mã:
Option Explicit

Sub TongHop()

Dim Lr&, i&, j&, k&, t&, tt&, R&, C&, kk&, it&, D&, TONGN&, TONGX&
Dim Ws As Worksheet
Dim NWs As Worksheet
Dim WbMoi As Workbook
Dim KQ(), Arr(), KQCuoi()
Dim Keys As Variant, Temp
Dim Dic As Object
Dim file As Variant

Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual

For i = 1 To 31

    Sheets("Mau").Select
    Sheets("Mau").Range("A1:Q25").Copy

                Worksheets.Add After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
                Set NWs = ActiveSheet
                NWs.Name = "N" & i
                NWs.Range("A1").Select
                ActiveSheet.Paste
                NWs.Columns("A:A").ColumnWidth = 2.89
                NWs.Columns("B:B").ColumnWidth = 9.78
                NWs.Columns("C:C").ColumnWidth = 3.22
                NWs.Columns("D:D").ColumnWidth = 8.22
                NWs.Columns("E:E").ColumnWidth = 4.33
                NWs.Columns("F:F").ColumnWidth = 6
                NWs.Columns("G:G").ColumnWidth = 8.22
                NWs.Columns("H:H").ColumnWidth = 3.67
                NWs.Columns("I:I").ColumnWidth = 3.44
                NWs.Columns("J:J").ColumnWidth = 14
                NWs.Columns("K:K").ColumnWidth = 13
                NWs.Columns("L:L").ColumnWidth = 10.11
                NWs.Columns("M:M").ColumnWidth = 8.11
                NWs.Columns("N:N").ColumnWidth = 4.33
                NWs.Columns("O:O").ColumnWidth = 6
                NWs.Columns("P:P").ColumnWidth = 8.22
                NWs.Columns("Q:Q").ColumnWidth = 7.56
               
                NWs.Range("B13:B" & tt + 12).WrapText = True
                NWs.Range("L13:L" & tt + 12).WrapText = True
                NWs.Range("D13:D" & tt + 12).ShrinkToFit = True
                NWs.Range("M13:M" & tt + 12).ShrinkToFit = True
                NWs.Range("A" & tt + 13, "Q" & tt + 13).Font.Bold = True
'=====Đoạn này làm code chay chậm=========
    With NWs.PageSetup
        .LeftMargin = Application.InchesToPoints(0.7)
        .RightMargin = Application.InchesToPoints(0.4)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        .Orientation = xlLandscape
    End With
Next i
 Call TaoMucLuc
 
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic

MsgBox "Đa xong"
End Sub
Trong đoạn code trên nếu vô hiệu đoạn tô đậm tho code chạy bình thường, còn không vô hiệu đoạn tô đậm đó code chạy rất ì ạch, mà tôi không hiểu tai sao.
Xem trong file đính kèm
 

File đính kèm

  • CĂN LỀ NHIỀU Sh CÙNG LÚC.xlsm
    32 KB · Đọc: 8
Lần chỉnh sửa cuối:
Xin chào các anh chị em trong gia đình Giải pháp Excel.
Tôi có một bài muốn nhờ các anh chị em xem và hướng dẫn cho tôi
Hàng ngày tôi phải tải từ trên phần mềm xuống 1 file( chỉ có 1 sh), Cuối tháng tôi phải tổng hợp lại 30-31 cái file kia (tức 31 Sh có kết cấu giống nhau nằm ở 31 cái file), thành một file có 31 sh (mỗi Sh 1 ngày). Phần tìm kiếm theo tên file, lấy dữ liệu, tổng hợp về 1 file (xử lý số liệu,... định dạng lại các cột...), tôi đã làm được và code chạy ổn định, tốc độ cũng tạm chấp nhận được.
Xong có một phần là định dạng sheet (căn lề trái, phải, trên, dưới, xem theo chiều ngang) để chuẩn bị cho công đoạn in thì code chạy rất chậm(Đoạn code này tôi dùng Record Macro ghi lại).

Vậy muốn nhờ các anh chị em xem bài chỉ cho tôi biết tại sao code chạy chậm hoặc có cách gì để code chạy nhanh hơn thì chỉ giúp tôi với (nếu có thể sửa code cho tôi được thì càng tốt).
Xin trân trọng cảm ơn!
Mã:
Option Explicit

Sub TongHop()

Dim Lr&, i&, j&, k&, t&, tt&, R&, C&, kk&, it&, D&, TONGN&, TONGX&
Dim Ws As Worksheet
Dim NWs As Worksheet
Dim WbMoi As Workbook
Dim KQ(), Arr(), KQCuoi()
Dim Keys As Variant, Temp
Dim Dic As Object
Dim file As Variant

Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual

For i = 1 To 31

    Sheets("Mau").Select
    Sheets("Mau").Range("A1:Q25").Copy

                Worksheets.Add After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
                Set NWs = ActiveSheet
                NWs.Name = "N" & i
                NWs.Range("A1").Select
                ActiveSheet.Paste
                NWs.Columns("A:A").ColumnWidth = 2.89
                NWs.Columns("B:B").ColumnWidth = 9.78
                NWs.Columns("C:C").ColumnWidth = 3.22
                NWs.Columns("D:D").ColumnWidth = 8.22
                NWs.Columns("E:E").ColumnWidth = 4.33
                NWs.Columns("F:F").ColumnWidth = 6
                NWs.Columns("G:G").ColumnWidth = 8.22
                NWs.Columns("H:H").ColumnWidth = 3.67
                NWs.Columns("I:I").ColumnWidth = 3.44
                NWs.Columns("J:J").ColumnWidth = 14
                NWs.Columns("K:K").ColumnWidth = 13
                NWs.Columns("L:L").ColumnWidth = 10.11
                NWs.Columns("M:M").ColumnWidth = 8.11
                NWs.Columns("N:N").ColumnWidth = 4.33
                NWs.Columns("O:O").ColumnWidth = 6
                NWs.Columns("P:P").ColumnWidth = 8.22
                NWs.Columns("Q:Q").ColumnWidth = 7.56
              
                NWs.Range("B13:B" & tt + 12).WrapText = True
                NWs.Range("L13:L" & tt + 12).WrapText = True
                NWs.Range("D13:D" & tt + 12).ShrinkToFit = True
                NWs.Range("M13:M" & tt + 12).ShrinkToFit = True
                NWs.Range("A" & tt + 13, "Q" & tt + 13).Font.Bold = True
'=====Đoạn này làm code chay chậm=========
    With NWs.PageSetup
        .LeftMargin = Application.InchesToPoints(0.7)
        .RightMargin = Application.InchesToPoints(0.4)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        .Orientation = xlLandscape
    End With
Next i
 Call TaoMucLuc
 
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic

MsgBox "Đa xong"
End Sub
Trong đoạn code trên nếu vô hiệu đoạn tô đậm tho code chạy bình thường, còn không vô hiệu đoạn tô đậm đó code chạy rất ì ạch, mà tôi không hiểu tai sao.
Xem trong file đính kèm
Định dạng sheet "Mau" đúng chuẩn copy ra 31 sheet và không định dạng lại
 
Upvote 0
Xin chào các anh chị em trong gia đình Giải pháp Excel.
Tôi có một bài muốn nhờ các anh chị em xem và hướng dẫn cho tôi
Hàng ngày tôi phải tải từ trên phần mềm xuống 1 file( chỉ có 1 sh), Cuối tháng tôi phải tổng hợp lại 30-31 cái file kia (tức 31 Sh có kết cấu giống nhau nằm ở 31 cái file), thành một file có 31 sh (mỗi Sh 1 ngày). Phần tìm kiếm theo tên file, lấy dữ liệu, tổng hợp về 1 file (xử lý số liệu,... định dạng lại các cột...), tôi đã làm được và code chạy ổn định, tốc độ cũng tạm chấp nhận được.
Xong có một phần là định dạng sheet (căn lề trái, phải, trên, dưới, xem theo chiều ngang) để chuẩn bị cho công đoạn in thì code chạy rất chậm(Đoạn code này tôi dùng Record Macro ghi lại).

Vậy muốn nhờ các anh chị em xem bài chỉ cho tôi biết tại sao code chạy chậm hoặc có cách gì để code chạy nhanh hơn thì chỉ giúp tôi với (nếu có thể sửa code cho tôi được thì càng tốt).
Xin trân trọng cảm ơn!
Mã:
Option Explicit

Sub TongHop()

Dim Lr&, i&, j&, k&, t&, tt&, R&, C&, kk&, it&, D&, TONGN&, TONGX&
Dim Ws As Worksheet
Dim NWs As Worksheet
Dim WbMoi As Workbook
Dim KQ(), Arr(), KQCuoi()
Dim Keys As Variant, Temp
Dim Dic As Object
Dim file As Variant

Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual

For i = 1 To 31

    Sheets("Mau").Select
    Sheets("Mau").Range("A1:Q25").Copy

                Worksheets.Add After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
                Set NWs = ActiveSheet
                NWs.Name = "N" & i
                NWs.Range("A1").Select
                ActiveSheet.Paste
                NWs.Columns("A:A").ColumnWidth = 2.89
                NWs.Columns("B:B").ColumnWidth = 9.78
                NWs.Columns("C:C").ColumnWidth = 3.22
                NWs.Columns("D:D").ColumnWidth = 8.22
                NWs.Columns("E:E").ColumnWidth = 4.33
                NWs.Columns("F:F").ColumnWidth = 6
                NWs.Columns("G:G").ColumnWidth = 8.22
                NWs.Columns("H:H").ColumnWidth = 3.67
                NWs.Columns("I:I").ColumnWidth = 3.44
                NWs.Columns("J:J").ColumnWidth = 14
                NWs.Columns("K:K").ColumnWidth = 13
                NWs.Columns("L:L").ColumnWidth = 10.11
                NWs.Columns("M:M").ColumnWidth = 8.11
                NWs.Columns("N:N").ColumnWidth = 4.33
                NWs.Columns("O:O").ColumnWidth = 6
                NWs.Columns("P:P").ColumnWidth = 8.22
                NWs.Columns("Q:Q").ColumnWidth = 7.56
              
                NWs.Range("B13:B" & tt + 12).WrapText = True
                NWs.Range("L13:L" & tt + 12).WrapText = True
                NWs.Range("D13:D" & tt + 12).ShrinkToFit = True
                NWs.Range("M13:M" & tt + 12).ShrinkToFit = True
                NWs.Range("A" & tt + 13, "Q" & tt + 13).Font.Bold = True
'=====Đoạn này làm code chay chậm=========
    With NWs.PageSetup
        .LeftMargin = Application.InchesToPoints(0.7)
        .RightMargin = Application.InchesToPoints(0.4)
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
        .HeaderMargin = Application.InchesToPoints(0.3)
        .FooterMargin = Application.InchesToPoints(0.3)
        .Orientation = xlLandscape
    End With
Next i
 Call TaoMucLuc
 
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic

MsgBox "Đa xong"
End Sub
Trong đoạn code trên nếu vô hiệu đoạn tô đậm tho code chạy bình thường, còn không vô hiệu đoạn tô đậm đó code chạy rất ì ạch, mà tôi không hiểu tai sao.
Xem trong file đính kèm
Sao ngó cồng kềnh nhỉ, thì vậy là được thôi mà:
Mã:
Sub TaoSheet()
Dim i As Long
For i = 1 To 31
    Sheets("Mau").Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
    ActiveSheet.Name = "N" & i
Next
End Sub

Bạn thêm điều kiện nếu sheet đã tồn tại thì xóa hay làm gì này nọ nữa nha
 
Upvote 0
Định dạng sheet "Mau" đúng chuẩn copy ra 31 sheet và không định dạng lại
Cảm ơn anh đã quan tâm.
Không biết tôi làm có đúng không nhưng sau khi tao Sh mới thì định dạng các cột của Sh vẫn không theo như sh Mau. và cứ vẫn theo mặc định của máy. Còn cái khúc With NWs.PageSetup....... cứ thêm vào là chạy ì ạch và tôi cũng không biết làm cách nào để căn chỉnh lề lại các mặc định của Excel.
Bài đã được tự động gộp:

Sao ngó cồng kềnh nhỉ, thì vậy là được thôi mà:
Mã:
Sub TaoSheet()
Dim i As Long
For i = 1 To 31
    Sheets("Mau").Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
    ActiveSheet.Name = "N" & i
Next
End Sub

Bạn thêm điều kiện nếu sheet đã tồn tại thì xóa hay làm gì này nọ nữa nha
Cảm ơn Bạn đã quan tâm xem bài và chỉ giáo, Như tôi đã nói, tôi phải tải về 31 cái file (1Sh/file (tạm gọi là Sh Nguon) copy sh Nguon ấy và paste và file Tonghop từng sh một (Sh Dich), sau đó xử lý số liệu trên Sh Dich, thêm bớt.... định dạng và in. Tôi cũng đã làm theo cách như anh đã bày, nhưng không hiểu sao là không paste được, khi thì báo lỗi ở dòng Sheets("Nguon").copy after, khi thì nó paste cái Sh Nguôn đầu tiên.
Một lần nữa xin được cảm ơn Anh HieuCD và Anh Nhattantnn, bằng sự chỉ bảo của các anh tôi đã làm lại và thành công
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom