Tao macro lưu lại dữ liệu khi bấm in

Liên hệ QC

vovanlanphuong

Thành viên mới
Tham gia
24/10/09
Bài viết
5
Được thích
0
Chào các anh chị
Mình có đoạn code sau để ghi dữ liệu qua một sheet khác khi in bằng macro nhưng khi in bằng các phương pháp thông thường (biểu tượng in trên menu hoặc CLT+P) thì dữ liệu không ghi qua được.

Các anh chị có thể giúp em không a.

Chân thành cảm ơn ạ


Sub Print1()
Dim Cll, Mg(), Vung, I, K
Set Vung = Range([C4], [C4].End(xlDown))
ReDim Mg(1 To Vung.Rows.Count, 1 To 5)
For Each Cll In Vung
If Cll <> vbNullString Then
K = K + 1
For I = 0 To 4
Mg(K, I + 1) = Cll.Offset(, -1).Offset(, I)
Next I
End If
Next Cll
Sheets("sheet3").Unprotect ("trihung")
Sheets("sheet3").[a10000].End(xlUp)(2).Resize(UBound(Mg), 5) = Mg
'Neu muôn danh lai so thu tu thì thêm doan này
Sheets("sheet3").Range(Sheets("sheet3").[a2], Sheets("sheet3").[a10000].End(xlUp)) = [row(A:A)]
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
:=True
Sheets("sheet3").Protect ("trihung")
End Sub
 
Chào các anh chị
Mình có đoạn code sau để ghi dữ liệu qua một sheet khác khi in bằng macro nhưng khi in bằng các phương pháp thông thường (biểu tượng in trên menu hoặc CLT+P) thì dữ liệu không ghi qua được.

Các anh chị có thể giúp em không a.

Chân thành cảm ơn ạ


Sub Print1()
Dim Cll, Mg(), Vung, I, K
Set Vung = Range([C4], [C4].End(xlDown))
ReDim Mg(1 To Vung.Rows.Count, 1 To 5)
For Each Cll In Vung
If Cll <> vbNullString Then
K = K + 1
For I = 0 To 4
Mg(K, I + 1) = Cll.Offset(, -1).Offset(, I)
Next I
End If
Next Cll
Sheets("sheet3").Unprotect ("trihung")
Sheets("sheet3").[a10000].End(xlUp)(2).Resize(UBound(Mg), 5) = Mg
'Neu muôn danh lai so thu tu thì thêm doan này
Sheets("sheet3").Range(Sheets("sheet3").[a2], Sheets("sheet3").[a10000].End(xlUp)) = [row(A:A)]
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
:=True
Sheets("sheet3").Protect ("trihung")
End Sub
Copy đoạn code bỏ vào trong thisworkbook, không đúng chỗ thì không chạy ráng chịu nha
PHP:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim Cll, Mg(), Vung, I, K
Set Vung = Range([C4], [C4].End(4))
ReDim Mg(1 To Vung.Rows.Count, 1 To 5)
For Each Cll In Vung
    If Cll <> vbNullString Then
        K = K + 1
        For I = 0 To 4
            Mg(K, I + 1) = Cll.Offset(, -1).Offset(, I)
        Next I
    End If
Next Cll
With Sheets("sheet3")
    .Unprotect ("trihung")
    .[a10000].End(3)(2).Resize(UBound(Mg), 5) = Mg
    .Range(.[a2], .[a10000].End(3)) = [row(A:A)]
    .Protect ("trihung")
End With
End Sub
 
Upvote 0
Web KT
Back
Top Bottom