Giúp code in hàng loạt theo điều kiện

Liên hệ QC

ducnv0709

Thành viên mới
Tham gia
3/3/13
Bài viết
40
Được thích
3
Chào các anh chị trên GPE, mình có file này muốn nhờ mọi người xem giúp code VBA để có thể in được hàng loạt theo các điều kiện: Ngày thực hiện, mã sản phẩm và công đoạn. Ví dụ ngày 17/9 có 5 sản phẩm, trong mỗi sản phẩm lại có 10 công đoạn, mình muốn in ra chi tiết như trong sheet "phiếu giao việc" từng công đoạn theo mã sản phẩm và theo ngày. Mỗi công đoạn có thể có nhiều chi tiết nên số dòng sẽ khác nhau, từ đó số trang in sẽ khác nhau. Mình đã tạo được bộ lọc theo ngày, mã sản phẩm và công đoạn rồi nhưng chưa biết cách để tạo ra nút để in hàng loạt theo bộ lọc đó. Nhờ mọi người giúp sức nhé. Chân thành cảm ơn.
 

File đính kèm

  • 20200921 - Phieu giao viec BP SON-mau.xlsm
    152.8 KB · Đọc: 31
Chào các anh chị trên GPE, mình có file này muốn nhờ mọi người xem giúp code VBA để có thể in được hàng loạt theo các điều kiện: Ngày thực hiện, mã sản phẩm và công đoạn. Ví dụ ngày 17/9 có 5 sản phẩm, trong mỗi sản phẩm lại có 10 công đoạn, mình muốn in ra chi tiết như trong sheet "phiếu giao việc" từng công đoạn theo mã sản phẩm và theo ngày. Mỗi công đoạn có thể có nhiều chi tiết nên số dòng sẽ khác nhau, từ đó số trang in sẽ khác nhau. Mình đã tạo được bộ lọc theo ngày, mã sản phẩm và công đoạn rồi nhưng chưa biết cách để tạo ra nút để in hàng loạt theo bộ lọc đó. Nhờ mọi người giúp sức nhé. Chân thành cảm ơn.
Ngắn gọn là in phần này, khi chọn ngày xong ấn nút là in phải không?
1600746217659.png
 
Upvote 0
Ngắn gọn là in phần này, khi chọn ngày xong ấn nút là in phải không?
View attachment 245926
Đúng rồi bạn ạ, khi chọn ngày bấm nút in là sẽ in ra các bản in theo mã sp và công đoạn. Hiện tại mình đang in thủ công: chọn ngày, chọn mã sản phẩm, chọn công đoạn rồi căn chỉnh dòng xem dòng nào không có dữ liệu thì ẩn đi rồi mới in ra nên mất rất nhiều thời gian. Vì vậy có code để in được hết thì tốt quá. Cảm ơn bạn.
 
Upvote 0
Đúng rồi bạn ạ, khi chọn ngày bấm nút in là sẽ in ra các bản in theo mã sp và công đoạn. Hiện tại mình đang in thủ công: chọn ngày, chọn mã sản phẩm, chọn công đoạn rồi căn chỉnh dòng xem dòng nào không có dữ liệu thì ẩn đi rồi mới in ra nên mất rất nhiều thời gian. Vì vậy có code để in được hết thì tốt quá. Cảm ơn bạn.
Khi in thì bạn không cần thiết phải bấm nút unhide, nhưng trong file mình làm thêm để bạn tiện kiểm tra nếu cần
Mục chữ ký mình gộp 2 dòng vào thành 1 dòng, tránh trường hợp khi in một dòng trang trước, dòng trang sau
PHP:
Const SigRow As Long = 121
Const FirstRow As Long = 7
    
Private Sub Print_Out()
Dim Lr As Long
Application.ScreenUpdating = False
With Sheet5
    Call Unhide
    Lr = .Columns("B").Find("*", SearchDirection:=xlPrevious, _
    SearchOrder:=xlByRows, LookIn:=xlValues).Row
    If Lr <= FirstRow Then
        MsgBox "Chua co du lieu"
        Exit Sub
    End If
    .Rows(Lr + 1 & ":" & SigRow - 2).Hidden = True
    .PrintOut
End With
Application.ScreenUpdating = True
End Sub


Private Sub Unhide()
With Sheet5
    .Rows(FirstRow & ":" & .Range("B" & Rows.Count).Row).Hidden = False
End With
End Sub
 

File đính kèm

  • 20200921 - Phieu giao viec BP SON-mau.xlsm
    159.9 KB · Đọc: 48
Upvote 0
Khi in thì bạn không cần thiết phải bấm nút unhide, nhưng trong file mình làm thêm để bạn tiện kiểm tra nếu cần
Mục chữ ký mình gộp 2 dòng vào thành 1 dòng, tránh trường hợp khi in một dòng trang trước, dòng trang sau
PHP:
Const SigRow As Long = 121
Const FirstRow As Long = 7
   
Private Sub Print_Out()
Dim Lr As Long
Application.ScreenUpdating = False
With Sheet5
    Call Unhide
    Lr = .Columns("B").Find("*", SearchDirection:=xlPrevious, _
    SearchOrder:=xlByRows, LookIn:=xlValues).Row
    If Lr <= FirstRow Then
        MsgBox "Chua co du lieu"
        Exit Sub
    End If
    .Rows(Lr + 1 & ":" & SigRow - 2).Hidden = True
    .PrintOut
End With
Application.ScreenUpdating = True
End Sub


Private Sub Unhide()
With Sheet5
    .Rows(FirstRow & ":" & .Range("B" & Rows.Count).Row).Hidden = False
End With
End Sub
Cảm ơn bạn rất nhiều, mình sẽ xem thử nhé.
 
Upvote 0
Khi in thì bạn không cần thiết phải bấm nút unhide, nhưng trong file mình làm thêm để bạn tiện kiểm tra nếu cần
Mục chữ ký mình gộp 2 dòng vào thành 1 dòng, tránh trường hợp khi in một dòng trang trước, dòng trang sau
PHP:
Const SigRow As Long = 121
Const FirstRow As Long = 7
   
Private Sub Print_Out()
Dim Lr As Long
Application.ScreenUpdating = False
With Sheet5
    Call Unhide
    Lr = .Columns("B").Find("*", SearchDirection:=xlPrevious, _
    SearchOrder:=xlByRows, LookIn:=xlValues).Row
    If Lr <= FirstRow Then
        MsgBox "Chua co du lieu"
        Exit Sub
    End If
    .Rows(Lr + 1 & ":" & SigRow - 2).Hidden = True
    .PrintOut
End With
Application.ScreenUpdating = True
End Sub


Private Sub Unhide()
With Sheet5
    .Rows(FirstRow & ":" & .Range("B" & Rows.Count).Row).Hidden = False
End With
End Sub
Bạn ơi cho mình hỏi chút là hiện tại mới in được 1 công đoạn hay 1 mã sản phẩm thôi à, ý mình mong muốn là sẽ xuất in ra tất cả các công đoạn và mã sản phẩm theo ngày đó. ví dụ ngày 18 có 5 sản phẩm, mỗi sản phẩm có 10 công đoạn như vậy sẽ có 5x10=50 bản in theo từng công đoạn và mã sản phẩm của ngày đó.
 
Upvote 0
Bạn ơi cho mình hỏi chút là hiện tại mới in được 1 công đoạn hay 1 mã sản phẩm thôi à, ý mình mong muốn là sẽ xuất in ra tất cả các công đoạn và mã sản phẩm theo ngày đó. ví dụ ngày 18 có 5 sản phẩm, mỗi sản phẩm có 10 công đoạn như vậy sẽ có 5x10=50 bản in theo từng công đoạn và mã sản phẩm của ngày đó.
Nhờ mọi người thêm code giúp mình nhé. Cảm ơn nhiều
 
Upvote 0
Bạn ơi cho mình hỏi chút là hiện tại mới in được 1 công đoạn hay 1 mã sản phẩm thôi à, ý mình mong muốn là sẽ xuất in ra tất cả các công đoạn và mã sản phẩm theo ngày đó. ví dụ ngày 18 có 5 sản phẩm, mỗi sản phẩm có 10 công đoạn như vậy sẽ có 5x10=50 bản in theo từng công đoạn và mã sản phẩm của ngày đó.
Bạn ơi cho mình hỏi chút là hiện tại mới in được 1 công đoạn hay 1 mã sản phẩm thôi à, ý mình mong muốn là sẽ xuất in ra tất cả các công đoạn và mã sản phẩm theo ngày đó. ví dụ ngày 18 có 5 sản phẩm, mỗi sản phẩm có 10 công đoạn như vậy sẽ có 5x10=50 bản in theo từng công đoạn và mã sản phẩm của ngày đó.
Nhờ mọi người thêm code giúp mình được không ạ. Mình cảm ơn nhiều.
 
Upvote 0
Bạn ơi cho mình hỏi chút là hiện tại mới in được 1 công đoạn hay 1 mã sản phẩm thôi à, ý mình mong muốn là sẽ xuất in ra tất cả các công đoạn và mã sản phẩm theo ngày đó. ví dụ ngày 18 có 5 sản phẩm, mỗi sản phẩm có 10 công đoạn như vậy sẽ có 5x10=50 bản in theo từng công đoạn và mã sản phẩm của ngày đó.
Híc, có bạn nào giúp mình được đoạn code này không. Cảm ơn rất nhiều.
 
Upvote 0
Híc, có bạn nào giúp mình được đoạn code này không. Cảm ơn rất nhiều.
Tên Sheet mà có dấu tiếng Việt thì làm khó nhau trong VBA rồi.
Tôi không có máy in, nên bạn tìm dòng bên dưới,Thay PrintPreview thành PrintOut
PHP:
.Range("A1:Q205").PrintPreview  'PrintOut'
Dòng 201 đến 205 bạn nhập cái gì tùy ý
 

File đính kèm

  • 20200921 - Phieu giao viec BP SON-mau.rar
    47.5 KB · Đọc: 35
Upvote 0
Tên Sheet mà có dấu tiếng Việt thì làm khó nhau trong VBA rồi.
Tôi không có máy in, nên bạn tìm dòng bên dưới,Thay PrintPreview thành PrintOut
PHP:
.Range("A1:Q205").PrintPreview  'PrintOut'
Dòng 201 đến 205 bạn nhập cái gì tùy ý
Dạ vâng anh. Em sẽ nghiên cứu thử anh nhé. Em cảm ơn nhiều
 
Upvote 0
Tên Sheet mà có dấu tiếng Việt thì làm khó nhau trong VBA rồi.
Tôi không có máy in, nên bạn tìm dòng bên dưới,Thay PrintPreview thành PrintOut
PHP:
.Range("A1:Q205").PrintPreview  'PrintOut'
Dòng 201 đến 205 bạn nhập cái gì tùy ý
Cảm ơn anh rất nhiều vì file chạy rất tốt và em sẽ lưu ý khi đặt tên sheet. Nếu được anh có thể chỉnh lại code để cho chỉ chạy theo ngày được không ạ vì hiện tại theo file của anh làm đang chạy theo chọn ngày và mã sản phẩm. Thực tế em mong muốn sẽ chỉ chọn ngày thì sẽ in toàn bộ các công đoạn của các mã sản phẩm có trong ngày đó vì nếu để chọn cả ngày và mã sản phẩm thì không rõ trong ngày đó có bao nhiêu mã sản phẩm để chọn. Nếu phức tạp quá thì em dùng file này cũng là ổn rồi ạ. Em cảm ơn.
 
Upvote 0
Cảm ơn anh rất nhiều vì file chạy rất tốt và em sẽ lưu ý khi đặt tên sheet. Nếu được anh có thể chỉnh lại code để cho chỉ chạy theo ngày được không ạ vì hiện tại theo file của anh làm đang chạy theo chọn ngày và mã sản phẩm. Thực tế em mong muốn sẽ chỉ chọn ngày thì sẽ in toàn bộ các công đoạn của các mã sản phẩm có trong ngày đó vì nếu để chọn cả ngày và mã sản phẩm thì không rõ trong ngày đó có bao nhiêu mã sản phẩm để chọn. Nếu phức tạp quá thì em dùng file này cũng là ổn rồi ạ. Em cảm ơn.
Bạn kiểm tra xem sao, nhiều mã, nhiều công đoạn thành nhiều trang in, không kiểm tra bằng mắt được, chỉ có thể in ra rồi kiểm tra thôi.
 

File đính kèm

  • Phieu giao viec.xlsb
    54.3 KB · Đọc: 64
Upvote 0
Web KT
Back
Top Bottom