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,202
Lần chỉnh sửa cuối:
Cảm ơn bác dhn46, file của bác rất hay và em đã vận dụng được vào để in phiếu lương của công ty.
 
Upvote 0
Nhờ bạn hướng dẫn mình khai báo textbox trong sheet khai bao, mình có chèn thêm 1 textbox nửa nhưng làm sao chèn được dữ liệu vào textbox mới chèn vào.
Chào bạn,

Để sử dụng Textbox thì bạn làm các bước như sau:

1/ Vẽ textbox trong sheet Form
2/ Đặt tên cho textbox đó
3/ Khai báo textbox tại sheet khai báo

Chỉ cần 3 bước này là bạn có thể sử dụng.
 
Upvote 0
Cảm ơn bác dhn46, file của bác rất hay và em đã vận dụng được vào để in phiếu lương của công ty.
Hy vọng tiện ích này hữu dụng với công việc của bạn. Thực tế mình đã sử dụng cái này để in phiếu lương cho công ty, in thẻ nhân viên, thẻ kho, tem sản phẩm, tờ khai BHXH, bảng biểu sản xuất, hợp đồng lao động....
 
Upvote 0
Chào bạn,

Để sử dụng Textbox thì bạn làm các bước như sau:

1/ Vẽ textbox trong sheet Form
2/ Đặt tên cho textbox đó
3/ Khai báo textbox tại sheet khai báo

Chỉ cần 3 bước này là bạn có thể sử dụng.
chổ đặt tên cho text box ở chổ nào bạn, bạn hướng dẫn chổ đặt tên cho texbox giùm
 
Upvote 0
Trong video hướng dẫn tại bài #1 có đề cập tới việc đặt tên cho ảnh, thì text box tương tự. Bạn tham khảo tại link sau
 
Upvote 0
Trong video hướng dẫn tại bài #1 có đề cập tới việc đặt tên cho ảnh, thì text box tương tự. Bạn tham khảo tại link sau
Em thiết kế 1 form trên 1 trang nhưng qua sheet kết quả thì không được 1 form trên 1 trang mà kết quả số thứ tự thứ 2 nó lại nằm ở page1 và page2...... bạn hướng dẫn cách chỉnh theo sheet form là một form trên một trang.
 

File đính kèm

  • IN.xls
    272 KB · Đọc: 15
Upvote 0
Em thiết kế 1 form trên 1 trang nhưng qua sheet kết quả thì không được 1 form trên 1 trang mà kết quả số thứ tự thứ 2 nó lại nằm ở page1 và page2...... bạn hướng dẫn cách chỉnh theo sheet form là một form trên một trang.
Hình như bạn chưa hiểu khai niệm trang trên Excel. Tốt nhất bạn hãy tìm hiểu kỹ về bố cục trên trang tính rồi hãy áp dụng.
Đây là kiến thức cơ bản nên nắm bắt bạn ah.

Với việc sử dụng in form như thế này thì bạn hãy chỉnh sheets Form sao cho vừa 1 trang, ẩn dòng từ 1 tới 3 rồi setup trang in, các bài hỏi như thế này tại topic này cũng có và cũng có hồi âm rồi bạn nhé.
 
Upvote 0
Hình như bạn chưa hiểu khai niệm trang trên Excel. Tốt nhất bạn hãy tìm hiểu kỹ về bố cục trên trang tính rồi hãy áp dụng.
Đây là kiến thức cơ bản nên nắm bắt bạn ah.

Với việc sử dụng in form như thế này thì bạn hãy chỉnh sheets Form sao cho vừa 1 trang, ẩn dòng từ 1 tới 3 rồi setup trang in, các bài hỏi như thế này tại topic này cũng có và cũng có hồi âm rồi bạn nhé.
Hi hi cám ơn bạn, mình sửa code của bạn tăng độ rộng của dòng lên, mình chỉnh được rồi bạn ơi.
 
Upvote 0
Video của bạn không có tiếng, xem mãi mà không hiểu cách đặt tên cho texbox như thế nào hết
Bạn kích vào Textbox đã vẽ, phía trên bên trái, dưới thanh công cụ có ô hiển thị (thường hiển thị vị trí ô hiện hành, vùng chọn, chọn name...) sẽ hiển thị tên textbox tại đó. Bạn chỉnh sửa là được.
 
Upvote 0
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]

(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
in dữ liệu hàng loạt có lập lại của bạn rất hay, chỉ cần thiết kế 1 from, nhưng có hạn chế là nếu dữ liệu khoảng 300 dòng ... Thì in tất cả sẽ bị treo máy, phải in 1 lần vài chục số, xong rồi in tiếp, bạn có thể sửa code nhanh hơn để in tất cả không bị treo máy
 
Upvote 0
in dữ liệu hàng loạt có lập lại của bạn rất hay, chỉ cần thiết kế 1 from, nhưng có hạn chế là nếu dữ liệu khoảng 300 dòng ... Thì in tất cả sẽ bị treo máy, phải in 1 lần vài chục số, xong rồi in tiếp, bạn có thể sửa code nhanh hơn để in tất cả không bị treo máy
Treo có thể do cấu hình máy tính yếu, hoặc do cấu hình máy in yếu (đặc biệt bộ nhớ đệm của máy in) nên không đủ khả năng nhận / lưu trữ và xử lý nhiều lệnh in một lúc (vì VBA chạy lệnh in hàng loạt).
 
Upvote 0
in dữ liệu hàng loạt có lập lại của bạn rất hay, chỉ cần thiết kế 1 from, nhưng có hạn chế là nếu dữ liệu khoảng 300 dòng ... Thì in tất cả sẽ bị treo máy, phải in 1 lần vài chục số, xong rồi in tiếp, bạn có thể sửa code nhanh hơn để in tất cả không bị treo máy
Chào bạn,

Bạn đã sử dụng được tiên ích như vậy là xong bước 1
Bạn đã nói sửa được code tại bài #188 thì bạn cũng có thể sửa code in theo ý của bạn đúng không? Mã mở mà bạn

Riêng với ứng dụng này thì tôi không sửa Code nếu code không lỗi. Bạn in 300 tờ chậm, treo máy nhưng tôi in 1000 tờ không làm sao, Form in của bạn khác của tôi, nếu tất cả mọi người sử dụng đề khác nhau thì không biết sửa bao nhiêu lần, sai mục đích khi tôi thiết kế chức năng. Hy vọng bạn hiểu những gì tôi đã làm.
 
Upvote 0
Chào bạn,

Bạn đã sử dụng được tiên ích như vậy là xong bước 1
Bạn đã nói sửa được code tại bài #188 thì bạn cũng có thể sửa code in theo ý của bạn đúng không? Mã mở mà bạn

Riêng với ứng dụng này thì tôi không sửa Code nếu code không lỗi. Bạn in 300 tờ chậm, treo máy nhưng tôi in 1000 tờ không làm sao, Form in của bạn khác của tôi, nếu tất cả mọi người sử dụng đề khác nhau thì không biết sửa bao nhiêu lần, sai mục đích khi tôi thiết kế chức năng. Hy vọng bạn hiểu những gì tôi đã làm.
tôi sửa code của bạn và in theo form của tôi, nhưng form của tôi có 11 cái texbox, có lẻ vậy nên nó bị treo máy
 
Upvote 0
Treo có thể do cấu hình máy tính yếu, hoặc do cấu hình máy in yếu (đặc biệt bộ nhớ đệm của máy in) nên không đủ khả năng nhận / lưu trữ và xử lý nhiều lệnh in một lúc (vì VBA chạy lệnh in hàng loạt).
máy tính mình dùng i3, vì form có nhiều texbox nên bị treo máy
 
Upvote 0
tôi sửa code của bạn và in theo form của tôi, nhưng form của tôi có 11 cái texbox, có lẻ vậy nên nó bị treo máy
Form in mà có tới 11 text box thì bạn nên xem lại Form của bạn. Tại sao phải sử dụng nhiều TextBox? Có thể giảm số lượng TextBox tối đa là bao nhiều. Excel khi tồn tại quá nhiều Object thì nặng file và chậm.
 
Upvote 0
Chào bác dhn46
File của bác em chuyển dữ liệu vào và chạy được, nhưng là EX2003 em lưu về EX2010 thì nó không làm được nữa, nó báo lỗi macro
anh xem giúp em
 

File đính kèm

  • In Form the xuat GTA.YAM (500).xls
    246 KB · Đọc: 13
  • In Form the xuat GTA.YAM.xlsx
    84.3 KB · Đọc: 3
Upvote 0
Form in mà có tới 11 text box thì bạn nên xem lại Form của bạn. Tại sao phải sử dụng nhiều TextBox? Có thể giảm số lượng TextBox tối đa là bao nhiều. Excel khi tồn tại quá nhiều Object thì nặng file và chậm.

Bác ơi cho em hỏi là sao kết quả của em khi xuất ra mà trang in cứ bắt đầu từ cột B5 chứ ko phải từ góc đầu là A1 ạ, ( em đã căn chỉnh form của em bắt đầu từ điểm A1 rồi ạ). Bác giúp em với ạ cảm ơn bác nhiều ạ
 
Upvote 0
Web KT
Back
Top Bottom