Chia sẻ tiện ích "In hàng loạt với dữ liệu có sẵn" trên Excel

Liên hệ QC

dhn46

Hướng tới tương lai
Tham gia
1/3/11
Bài viết
3,252
Được thích
3,868
Qua quá trình làm việc dhn46 nhận thấy nhu cầu in với số lượng lớn Form mẫu với Data có sẵn là rất nhiều, ví dụ như: Hợp đồng, tờ khai bảo hiểm, phiếu xuất nhập, nhãn mác thùng hàng, thẻ nhân viên...
Các biểu mẫu này có đặc điểm chung là: in trên Form sẵn có với dữ liệu lần lượt lấy từ nguồn tương tự Mail Merg, hoặc in các biểu mẫu có thêm hình ảnh. Việc tiếp cận và tạo các biểu mẫu này với các bạn không biết lập trình là 1 điều khó khăn, do đó dhn46 có viết 1 tiện ích nhỏ để hỗ trợ cho những bạn cần mà chưa có giải pháp.
* Tính năng:
- Tự động in các biểu mẫu với số liệu nhảy tuần tự theo bảng dữ liệu gốc
- Tự động chèn ảnh vào Form mẫu
- Tạo các biểu mẫu tùy ý, linh động trong việc chèn dữ liệu vào Form
* Hướng dẫn sử dụng:
Có 2 phiên bản in hàng loạt
- Loại 1: In Form không lặp lại - dùng để in 1 Form duy nhất trên 1 trang, chỉ nhảy dữ liệu và hình ảnh, ví dụ như hợp đồng, BHXH, phiếu xuất nhập...
- Loại 2: In Form lặp lại – dùng để in mà Form tự nhân bản trên trang in với số cột tùy chọn, dùng để in các Form mẫu kích cỡ nhỏ như thẻ nhân viên, nhãn thùng hàng...
Để sử dụng 2 loại các bạn cần thực hiện các bước sau:
*Chung:
- Cả 2 File đều có: Sheet Khai báo và Sheet Data.
- Các bạn khai báo đầy đủ các trường trong sheet Khai báo tương ứng với sheet Data
+ Sheet Name: tên sheet chứa Form mẫu (ở ví dụ là: Form – ô C1)
+ Nội dung: Các trường cần chèn vào Form mẫu
+ Cột Sheet Data: Cột dữ liệu tương ứng với Nội dung tại Sheet Data. (Ví dụ: A, B, ..
+ Cột Vị trí hiển thị: Vị trí đặt dữ liệu tại Sheet Form (Các vị trí này sẽ nhảy tuần tự dữ liệu theo mỗi bản in)
+ Link ảnh: Copy đường dẫn thư mục chứa ảnh vào ô F1, hoặc nhấn nút lệnh để tìm đường dẫn
+ Khung ảnh: Tên các trường ảnh muốn chèn
+ Tên khung ảnh: Đây là tên của Shape các bạn vẽ trên Sheet Form. Các hình ảnh sẽ được Fill trong shape nên cần phải vẽ shape khi muốn chèn trên Form. Nếu không cần hình ảnh nhảy trên Form thì các bạn không khai báo trường này, để trống.
+ Cột tên ảnh: Là cột chứa tên ảnh không bao gồm phần mở rộng
Ở đây dhn46 lấy tên ảnh theo cấu trúc [tên ảnh = tên ảnh trong cột tên ảnh]
Theo ví dụ trong File thì tên ảnh lấy theo Code. bạn có Code VN0001 thì sẽ phải có ảnh VN0001.jpg hoặc VN0001.bmp.
*Riêng:
- Đối với bản in hàng loạt có lặp lại: thì các bạn cần thiết kế Form mẫu, khai báo vùng chứa Form mẫu và số cột Form trong trang in.
*--------------------------------------
Khi hoàn thành bước khai báo có thể tiến hành in.
Các bạn xem Video để tham khảo cách sử dụng

[video=youtube;4V8qhBhw4yo]http://www.youtube.com/watch?v=4V8qhBhw4yo&feature=youtu.be[/video]

(Do dhn46 mới "tập tành" viết Code nên Code còn lủng củng và sẽ có nhiều hạn chế, mong các bạn sử dụng, góp ý để hoàn thiện hơn sản phẩm.)

Trân trọng!
*----------------------------------
Update: 14/08/2014 - gói gọn các cải tiến trong 1 phiên bản
- Cho phép thêm dữ liệu trên Textbox
- In thẻ trên sheet KQ bắt đầu tại dòng 10 để 9 dòng trước có thể điền tiêu đề.
- Chọn in thẻ theo số thứ tự qua Form.
- In, xem khi Filter
*-----------------------------------
Update: 14/08/2014
- Sửa in hàng loạt không lặp lại - Sửa lỗi code giớ hạn 18 field
 

File đính kèm

  • In Form hàng loạt 04.2016.rar
    305.1 KB · Đọc: 3,203
Lần chỉnh sửa cuối:
Chào bạn "dhn46" mình rất cảm ơn bạn đã Chia sẻ tiện ích "In hàng loạt với dữ liệu có sẵn", trong phần Inform có lăp lại bây giờ trong phần sheet "data", mình dùng bộ lọc Filter cho dòng số 9, mình chọn cột "chức vụ", sau đó lọc chỉ lấy bộ phận "công nhân" để xuất kết quả. Tiếp đó mình dùng Form "in tùy chọn", sau đó minh nhấn Ctr+"chuột trái" để chọn Inputbox, với trường hợp dữ liệu ít là như thế không vấn đề gì, nhưng nếu mà số lượng lớn làm như thế mất thời gian. Bạn co thể giúp minh viết đoạn code để nó bỏ qua không xuất kết quả phần đã Hide do Filter không?
Cảm ơn bạn nhiều
 
Upvote 0
Chào bạn "dhn46" mình rất cảm ơn bạn đã Chia sẻ tiện ích "In hàng loạt với dữ liệu có sẵn", trong phần Inform có lăp lại bây giờ trong phần sheet "data", mình dùng bộ lọc Filter cho dòng số 9, mình chọn cột "chức vụ", sau đó lọc chỉ lấy bộ phận "công nhân" để xuất kết quả. Tiếp đó mình dùng Form "in tùy chọn", sau đó minh nhấn Ctr+"chuột trái" để chọn Inputbox, với trường hợp dữ liệu ít là như thế không vấn đề gì, nhưng nếu mà số lượng lớn làm như thế mất thời gian. Bạn co thể giúp minh viết đoạn code để nó bỏ qua không xuất kết quả phần đã Hide do Filter không?
Cảm ơn bạn nhiều
Chào bạn,

Việc viết Code như vậy không khó, hiện tại tôi chưa áp dụng vào tiện ích. Nếu bạn muốn tìm hiểu thì bạn phải biết sửa Code 1 chút nhé

Tại sub Intuychon bạn thay đoạn

Mã:
    Set Rng = Application.InputBox( _
            "Quet chon vung can in " & _
            vbNewLine & vbNewLine & _
            "Cot A Sheet 'Data'  ", "Chon Code nhan vien de in", Type:=8)
Bằng đoạn code
Mã:
    Set Rng = Range("A6:A" & Range("A65536").End(3).Row).SpecialCells(xlCellTypeVisible)

Như vậy toàn bộ phần bạn Filter sẽ được in, loại bỏ phần không chọn.
 
Upvote 0
Chào bạn "dhn46" mình rất cảm ơn bạn đã Chia sẻ tiện ích "In hàng loạt với dữ liệu có sẵn", trong phần Inform có lăp lại bây giờ trong phần sheet "data", mình dùng bộ lọc Filter cho dòng số 9, mình chọn cột "chức vụ", sau đó lọc chỉ lấy bộ phận "công nhân" để xuất kết quả. Tiếp đó mình dùng Form "in tùy chọn", sau đó minh nhấn Ctr+"chuột trái" để chọn Inputbox, với trường hợp dữ liệu ít là như thế không vấn đề gì, nhưng nếu mà số lượng lớn làm như thế mất thời gian. Bạn co thể giúp minh viết đoạn code để nó bỏ qua không xuất kết quả phần đã Hide do Filter không?
Cảm ơn bạn nhiều
 
Upvote 0
Chào bạn "dhn46" mình rất cảm ơn bạn đã Chia sẻ tiện ích "In hàng loạt với dữ liệu có sẵn", trong phần Inform có lăp lại bây giờ trong phần sheet "data", mình dùng bộ lọc Filter cho dòng số 9, mình chọn cột "chức vụ", sau đó lọc chỉ lấy bộ phận "công nhân" để xuất kết quả. Tiếp đó mình dùng Form "in tùy chọn", sau đó minh nhấn Ctr+"chuột trái" để chọn Inputbox, với trường hợp dữ liệu ít là như thế không vấn đề gì, nhưng nếu mà số lượng lớn làm như thế mất thời gian. Bạn co thể giúp minh viết đoạn code để nó bỏ qua không xuất kết quả phần đã Hide do Filter không?
Cảm ơn bạn nhiều
 
Upvote 0
Chào bạn,

Việc viết Code như vậy không khó, hiện tại tôi chưa áp dụng vào tiện ích. Nếu bạn muốn tìm hiểu thì bạn phải biết sửa Code 1 chút nhé

Tại sub Intuychon bạn thay đoạn

Mã:
    Set Rng = Application.InputBox( _
            "Quet chon vung can in " & _
            vbNewLine & vbNewLine & _
            "Cot A Sheet 'Data'  ", "Chon Code nhan vien de in", Type:=8)
Bằng đoạn code
Mã:
    Set Rng = Range("A6:A" & Range("A65536").End(3).Row).SpecialCells(xlCellTypeVisible)

Như vậy toàn bộ phần bạn Filter sẽ được in, loại bỏ phần không chọn.

Cám own bạn, mình làm thử rồi, nhưng nó vẫn xuất ra 4 thẻ đầu tiên không có giá trị (cái này mình không hiểu lắm)
Minh thử làm cách khác khai thêm biến Rng1 như này thi nó báo "ban khong chon in" mong bạn chỉ giúp.
Thanks!


Set Rng1 = Application.InputBox( _
"Quet chon vung can in " & _
vbNewLine & vbNewLine & _
"Cot A Sheet 'Data' ", "Chon Code nhan vien de in", Type:=8)

Rng = Range1.SpecialCells(xlCellTypeVisible)
 

File đính kèm

  • In Form co lap lai 08.2014.xls
    330 KB · Đọc: 14
Upvote 0
Cám own bạn, mình làm thử rồi, nhưng nó vẫn xuất ra 4 thẻ đầu tiên không có giá trị (cái này mình không hiểu lắm)
Minh thử làm cách khác khai thêm biến Rng1 như này thi nó báo "ban khong chon in" mong bạn chỉ giúp.
Thanks!


Set Rng1 = Application.InputBox( _
"Quet chon vung can in " & _
vbNewLine & vbNewLine & _
"Cot A Sheet 'Data' ", "Chon Code nhan vien de in", Type:=8)

Rng = Range1.SpecialCells(xlCellTypeVisible)

Mình có chút nhầm lẫn tại chỗ màu đỏ, bạn sửa lại 1 chút nhé
Mã:
Set Rng = Range("A[COLOR=#ff0000][B]10[/B][/COLOR]:A" & Range("A65536").End(3).Row).SpecialCells(xlCellTypeVisible)

'-----------------------------
Thực tế cũng không cần đến filter, bạn có thể sort dữ liệu trước rồi chọn in. Một cách đơn giản để không phải sửa Code.
 
Lần chỉnh sửa cuối:
Upvote 0
Chào thầy dhn46,
Trong qua trình thực hiện em có 1 số vấn đề đối với file in form khong lap lại như sau:
- nếu 1 dữ liệu không có hình thì hình đó là hình của file cũ.
- in liên tục thì bị deburg (như hình đính kèm)
- folder anh chỉ chọn được tối đa 2 đường dẫn, có khi chỉ đc 1 (nghĩa là D:\A\B hoặc chỉ được D:\A)
Thầy xem lại giùm em các vấn đề này nha.
 
Lần chỉnh sửa cuối:
Upvote 0
Chào thầy dhn46,
Trong qua trình thực hiện em có 1 số vấn đề đối với file in form khong lap lại như sau:
- nếu 1 dữ liệu không có hình thì hình đó là hình của file cũ.
- in liên tục thì bị deburg (ten_tep = f1.Name)
- folder anh chỉ chọn được tối đa 2 đường dẫn, có khi chỉ đc 1 (nghĩa là D:\A\B hoặc chỉ được D:\A)
Thầy xem lại giùm em các vấn đề này nha.
 
Upvote 0
Chào thầy dhn46,
Trong qua trình thực hiện em có 1 số vấn đề đối với file in form khong lap lại như sau:
- nếu 1 dữ liệu không có hình thì hình đó là hình của file cũ.
- in liên tục thì bị deburg (ten_tep = f1.Name)
- folder anh chỉ chọn được tối đa 2 đường dẫn, có khi chỉ đc 1 (nghĩa là D:\A\B hoặc chỉ được D:\A)
Thầy xem lại giùm em các vấn đề này nha.
Chào bạn,

Tôi đã kiểm tra trên máy của tôi thì không thấy hiện tượng bạn nói.

Bạn có thể đưa 1 ít data, ảnh của bạn để tôi test. Tôi sẽ phản hồi cho bạn.
 
Upvote 0
Đúng là do ít dữ liệu nên nó báo lỗi. giờ em chỉ còn phần chọn folder ảnh thôi thầy, nó chỉ cho tối đa 2 đường dẫn không biết do sao.(làm ở cty nên em k tải file lên được)
 
Upvote 0
Đúng là do ít dữ liệu nên nó báo lỗi. giờ em chỉ còn phần chọn folder ảnh thôi thầy, nó chỉ cho tối đa 2 đường dẫn không biết do sao.(làm ở cty nên em k tải file lên được)
Phần màu đỏ thì tôi không thể giải thích nhé, bởi code đã sai thì sai chứ không có chuyện ít thì lỗi, nhiều thì không.

Phần màu xanh tôi test trên máy tôi vẫn bình thường và ngay trong file mẫu cũng đã có đường dẫn nhiều thư mục con. Nếu bạn không thể sử dụng nút lệnh thì bạn copy đường dẫn vào nhé.
 
Upvote 0
Phần màu đỏ thì tôi không thể giải thích nhé, bởi code đã sai thì sai chứ không có chuyện ít thì lỗi, nhiều thì không.

Phần màu xanh tôi test trên máy tôi vẫn bình thường và ngay trong file mẫu cũng đã có đường dẫn nhiều thư mục con. Nếu bạn không thể sử dụng nút lệnh thì bạn copy đường dẫn vào nhé.

Em cũng thấy vậy, nhưng khi đổi folder khác thì nó chỉ cho ngắn vậy thôi, thầy thử thay đổi thư mục khác xem sao? Em cũng gõ thẳng đường dẫn vào luôn nhưng nó sẽ không hiện hình.
 
Upvote 0
Cảm ơn dhn46. file của bạn rất hay. mình xin có ý kiến . liệu trong 1 sheet có 4 trang ví dụ thì nên có thêm chế độ in ghép mặt trước mặt sau trên một tờ giấy. ví dụ mình chỉ in trang 1 và 2 trên cùng 1 tờ giấy còn trang 3 trên 1 tờ giấy. trang 4 trên 1 tờ giấy thì minh nghĩ file sẽ hoàn thiện hơn
 
Upvote 0
cái này lên thêm lệnh in hai mặt trên cùng một trang giấy nữa thì hay hơn
 
Upvote 0
Cám ơn bạn dhn46 đã chia sẻ thông tin rất hữu ích cho mọi người.
Mình đã ứng dụng được file của bạn.
Nhưng Form mẫu của mình có vấn đề phát sinh thêm phần "Họ tên sử dụng" có nhiều dòng thông tin cần thể thể hiện hết trên Form như trong file và ảnh đính mình kèm, bạn xem giúp mình nhé.
Cám ơn bạn!
 

File đính kèm

  • In Form khong lap lai 07.2016.xls
    156 KB · Đọc: 10
  • Sheet data.jpg
    Sheet data.jpg
    36 KB · Đọc: 16
  • Sheet form.jpg
    Sheet form.jpg
    33 KB · Đọc: 13
Upvote 0
Cảm ơn dhn46. file của bạn rất hay. mình xin có ý kiến . liệu trong 1 sheet có 4 trang ví dụ thì nên có thêm chế độ in ghép mặt trước mặt sau trên một tờ giấy. ví dụ mình chỉ in trang 1 và 2 trên cùng 1 tờ giấy còn trang 3 trên 1 tờ giấy. trang 4 trên 1 tờ giấy thì minh nghĩ file sẽ hoàn thiện hơn
Bạn hoàn toàn có thể thiết lập in 2 mặt qua việc setup máy in.
 
Upvote 0
Cám ơn bạn dhn46 đã chia sẻ thông tin rất hữu ích cho mọi người.
Mình đã ứng dụng được file của bạn.
Nhưng Form mẫu của mình có vấn đề phát sinh thêm phần "Họ tên sử dụng" có nhiều dòng thông tin cần thể thể hiện hết trên Form như trong file và ảnh đính mình kèm, bạn xem giúp mình nhé.
Cám ơn bạn!

Bạn xem file nhé.

In nhiều trường cần có 1 chút thủ thuật để ừng dụng. Tôi có tạo 1 vùng phụ để lấy tham chiếu và giải quyết vấn đề của bạn.
 

File đính kèm

  • In Form khong lap lai 07.2016.xls
    167 KB · Đọc: 43
Upvote 0
Bạn xem file nhé.

In nhiều trường cần có 1 chút thủ thuật để ừng dụng. Tôi có tạo 1 vùng phụ để lấy tham chiếu và giải quyết vấn đề của bạn.
Cám ơn bạn rất nhiều.
Bài bạn chia sẻ rất là hữu ích và phù hợp với yêu cầu đa dạng của mọi người.
Riêng trường hợp bài mình đăng thì bạn "hpkhuong" đã chia sẻ rất hay và đúng 100% ý mình yêu cầu. Bạn có thể tham khảo thêm nhé. :)
 

File đính kèm

  • File mau_Edit.rar
    75 KB · Đọc: 39
Upvote 0
Làm ơn giúp em tạo cách in liên tục trong file này với ạ, em có quá nhiều file muốn dùng lệnh in liên tục nên các anh chị làm ơn chỉ giúp em cách tạo file đó với ạ, em có gửi file mẫu kèm theo, em rất mong đc quý anh chị giúp đỡ ạ, em xin chân thành cảm ơn!
 

File đính kèm

  • SS 2016-2017.xlsx
    471.6 KB · Đọc: 13
Upvote 0
Làm ơn giúp em tạo cách in liên tục trong file này với ạ, em có quá nhiều file muốn dùng lệnh in liên tục nên các anh chị làm ơn chỉ giúp em cách tạo file đó với ạ, em có gửi file mẫu kèm theo, em rất mong đc quý anh chị giúp đỡ ạ, em xin chân thành cảm ơn!
Trước tiên bạn phải đọc hướng dẫn đã.
Bạn cứ làm đi, đến đoạn nào khuc mắc tôi sẽ giải đáp.
 
Upvote 0
Web KT
Back
Top Bottom