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,251
Được thích
3,870
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,223
Lần chỉnh sửa cuối:
Theo cách anh chỉ em đã chuyển tất cả dữ liệu của em vào file gốc của anh, rất thành công rất OK. Cám ơn anh nhiều nhiều.
Nhưng có một vấn đề là Lương cho nhân viên ở công ty em phân làm 2 mảng lương khoán việc và lương Hợp đồng chính thức. Và 2 loại lương trên có 2 sheet khác nhau, do đó cần in 2 loại phiếu lương có nội dung khác nhau. Theo như bài #17 mà em gửi thì có 2 sheet khác nhau .
Vậy em xin anh ý kiến cho việc in sao cho có hiệu quả. Rất rất cám ơn anh.
Chào bạn,

Khi viết chương trình mình chỉ tạo chức năng thực hiện trên 1 sheet DATA. Với dữ liệu của bạn có tới 2 bảng lương do đó không thể chạy được chương trình.

Bạn có thể lập ra 2 file thay vì 2 sheet để chạy lương vì theo miêu tả mình thấy 2 sheet đó không liên quan, hoặc nếu cấu trúc có giống nhau thì bạn có thể gộp và 1 sheet và thêm cột nhận diện 2 loại lương. Việc trích lọc theo cột nhận diện đó cũng rất dễ dàng và bạn chỉnh lại phiếu lương sao cho có tính tổng quát nhất thì sẽ sử dụng được tiện ích

Chúc bạn thành công.
 
Upvote 0
Chào bạn,

Khi viết chương trình mình chỉ tạo chức năng thực hiện trên 1 sheet DATA. Với dữ liệu của bạn có tới 2 bảng lương do đó không thể chạy được chương trình.

Bạn có thể lập ra 2 file thay vì 2 sheet để chạy lương vì theo miêu tả mình thấy 2 sheet đó không liên quan, hoặc nếu cấu trúc có giống nhau thì bạn có thể gộp và 1 sheet và thêm cột nhận diện 2 loại lương. Việc trích lọc theo cột nhận diện đó cũng rất dễ dàng và bạn chỉnh lại phiếu lương sao cho có tính tổng quát nhất thì sẽ sử dụng được tiện ích

Chúc bạn thành công.

Rồi. em hiểu rồi, em biết là đòi hỏi hơi quá sức, nhưng cũng thử xem đó mà. Cám ơn anh rất nhiều, em sẽ tính cách khác xem. Nhưng không có cô kế toán nào chê cái file của anh hết, họ cực kỳ thích với file thiết kế của anh , anh là anh hùng của họ rùi đó, và là vị cứu tinh của em rùi. Việc còn lại em sẽ suy nghĩ tiếp.
Cám ơn anh nhiều nhiều.
 
Upvote 0
Rồi. em hiểu rồi, em biết là đòi hỏi hơi quá sức, nhưng cũng thử xem đó mà. Cám ơn anh rất nhiều, em sẽ tính cách khác xem. Nhưng không có cô kế toán nào chê cái file của anh hết, họ cực kỳ thích với file thiết kế của anh , anh là anh hùng của họ rùi đó, và là vị cứu tinh của em rùi. Việc còn lại em sẽ suy nghĩ tiếp.
Cám ơn anh nhiều nhiều.
Cảm ơn bạn nhiều ^^. Viết được một cái gì đó, chia sẻ và được mọi người ủng hộ là một niềm vui khó tả. Nay lại được lời động viên của các bạn cũng thêm động lực để mình cố gắng hơn.

Chúc mọi người sức khỏe, thành công!
 
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]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 Form, fix một số lỗi.
*----------------------------------
Update Form sử dụng cho Win7 64 bit + Office 2010 64 bit, cải thiện tốc độ.
Chào thầy,
Cảm ơn thầy về bài viết rất hay.
Em muốn chèn thên hình nền của công ty thì phải làm thế nào ạ
 

File đính kèm

  • LAMTHE-2013-T11-02.pdf
    145.2 KB · Đọc: 69
Upvote 0
Chào thầy,
Cảm ơn thầy về bài viết rất hay.
Em muốn chèn thên hình nền của công ty thì phải làm thế nào ạ
Chào bạn,

Để chèn hình vào Form làm thẻ thì bạn sử dụng Form in có lặp lại

- Nếu là Logo thì chèn ảnh bình thường
- Nếu bạn muốn chèn ảnh của từng nhân viên thì bạn làm theo các bước

+/1 Vẽ 1 hình vuông đặt tên là SHP
+2/ Khai báo SHP trong sheet khai bao
+3/ Đặt tên ảnh trùng với tên Code ví dụ nhân viên code 100017 thì ảnh phải là 100017.jpg

Các thao tác làm giống như Video bạn nhé. Hy vọng sẽ hữu ích cho công việc của bạn.
 
Upvote 0
Chào bạn,

Để chèn hình vào Form làm thẻ thì bạn sử dụng Form in có lặp lại

- Nếu là Logo thì chèn ảnh bình thường
- Nếu bạn muốn chèn ảnh của từng nhân viên thì bạn làm theo các bước

+/1 Vẽ 1 hình vuông đặt tên là SHP
+2/ Khai báo SHP trong sheet khai bao
+3/ Đặt tên ảnh trùng với tên Code ví dụ nhân viên code 100017 thì ảnh phải là 100017.jpg

Các thao tác làm giống như Video bạn nhé. Hy vọng sẽ hữu ích cho công việc của bạn.
Cảm ơn thầy đã trả lời,
Em muốn chèn hình (đính kèm) nhưng hình che mất chữ và các thông tin khác, không in được ạ.
 

File đính kèm

  • shp.jpg
    shp.jpg
    10.5 KB · Đọc: 223
Upvote 0
Cảm ơn thầy đã trả lời,
Em muốn chèn hình (đính kèm) nhưng hình che mất chữ và các thông tin khác, không in được ạ.
Chào bạn,

Việc chèn cả 1 khung vào thẻ là một điểm yếu của tiện ích song vẫn có thể thực hiện được, Bạn làm như sau

- Cắt Form của bạn thành 3 phần
+/ Phần 1: chỉ bao gồm chữ Framas@
+/ Phần 2: phần màu xanh phía dưới cùng
+/ Phần 3: phần màu xanh bên phải

Sau đó bạn ghép 3 phần đó vào khung Form. Mục đích cách làm này là chừa chỗ trống cho các cell chữa dữ liệu.

Mình nghĩ cách này chắc chắn sẽ giải quyết được yêu cầu của bạn.
 
Upvote 0
Chào bạn,

Việc chèn cả 1 khung vào thẻ là một điểm yếu của tiện ích song vẫn có thể thực hiện được, Bạn làm như sau

- Cắt Form của bạn thành 3 phần
+/ Phần 1: chỉ bao gồm chữ Framas@
+/ Phần 2: phần màu xanh phía dưới cùng
+/ Phần 3: phần màu xanh bên phải

Sau đó bạn ghép 3 phần đó vào khung Form. Mục đích cách làm này là chừa chỗ trống cho các cell chữa dữ liệu.

Mình nghĩ cách này chắc chắn sẽ giải quyết được yêu cầu của bạn.

Cắt như vậy nếu nhiều ô chữ chắc biến dạng hình trên Frame mất. Vấn đề này hoàn toàn có thể sử lý thoả đáng nếu ta kết hợp giữa Frame và Textbox. Ta đặt Frame làm nền và đặt các Textbox lên trên Frame (Các Textbox ta chọn không nền, không khung)
 
Upvote 0
Cắt như vậy nếu nhiều ô chữ chắc biến dạng hình trên Frame mất. Vấn đề này hoàn toàn có thể sử lý thoả đáng nếu ta kết hợp giữa Frame và Textbox. Ta đặt Frame làm nền và đặt các Textbox lên trên Frame (Các Textbox ta chọn không nền, không khung)
Cháu chào chú Sealand,

Với cách viết Code bài này sẽ không sử dụng trên text box được chú ạ. Và khi cắt ghép hình thì không ảnh hưởng tới kích thước hình ảnh đâu chú.
dhn46 post thử file thẻ áp dụng hình ảnh bài #26 chú và bạn xem nhé.
 

File đính kèm

  • In Form co lap lai.zip
    869.1 KB · Đọc: 139
Upvote 0
Không biết lý do gì mà dhn46 lại cho rằng với bài này không thể dùng Textbox được. Mặt khác, cách cắt hình như dhn46 chỉ may khi gặp hình nền màu trắng chứ hình có màu chắc các khu vực bị cắt sẽ tính sao đây.
 
Upvote 0
Không biết lý do gì mà dhn46 lại cho rằng với bài này không thể dùng Textbox được. Mặt khác, cách cắt hình như dhn46 chỉ may khi gặp hình nền màu trắng chứ hình có màu chắc các khu vực bị cắt sẽ tính sao đây.
Em đang bị trường hợp giống sealand đã nói trên khi in ra.
 
Upvote 0
Không biết lý do gì mà dhn46 lại cho rằng với bài này không thể dùng Textbox được. Mặt khác, cách cắt hình như dhn46 chỉ may khi gặp hình nền màu trắng chứ hình có màu chắc các khu vực bị cắt sẽ tính sao đây.
Dạ, với ứng dụng file tại bài #1 cháu cũng chưa có nghĩ ra được phương pháp dùng Text box để tùy biến, tất nhiên nếu viết riêng cho trường hợp sử dụng Textbox thì sẽ được.

Chú cho cháu gợi ý áp dụng bài #1 với việc sử dụng Textbox với.

Cảm ơn chú Sealand!
 
Upvote 0
Mình làm 1 file ví dụ, để đỡ phải gửi ảnh mình bỏ phần chèn ảnh nha.
Anh em tải file theo Link sau:

http://www.mediafire.com/download/qg6n9e776k9vyec/In_The2.rar

Thật chán quá, chả hiểu sao mình gửi kèm file mãi không được. Nản đành vòng qua Mediafire nhờ.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình làm 1 file ví dụ, để đỡ phải gửi ảnh mình bỏ phần chèn ảnh nha.
Anh em tải file theo Link sau:

http://www.mediafire.com/download/qg6n9e776k9vyec/In_The2.rar

Thật chán quá, chả hiểu sao mình gửi kèm file mãi không được. Nản đành vòng qua Mediafire nhờ.
Code bài này chú viết riêng cho trường hợp Textbox, còn bài #1 cháu viết cho các trường hợp chung có thể tùy biến khá cao, người dùng có thể tự biến đổi cho form của mình mà không cần biết đến lập trình.

Cảm ơn chú!
 
Upvote 0
Code bài này chú viết riêng cho trường hợp Textbox, còn bài #1 cháu viết cho các trường hợp chung có thể tùy biến khá cao, người dùng có thể tự biến đổi cho form của mình mà không cần biết đến lập trình.

Cảm ơn chú!
Em cảm ơn dhn46sealand,
Em muốn kết hợp hai mẫu này có được không. Của sealand chèn được nền còn của dhn46 in đẹp và dễ dùng hơn.
 
Upvote 0
Em cảm ơn dhn46sealand,
Em muốn kết hợp hai mẫu này có được không. Của sealand chèn được nền còn của dhn46 in đẹp và dễ dùng hơn.
Đã cập nhật phiên bản In Form New 2 để các bạn có thể sử dụng TextBox điền số liệu

Với cách làm này bạn có thể sử dụng in thẻ như ý muốn và cách khai báo như khai báo khung ảnh, tức là bạn cần làm theo 3 bước:

-1/ Vẽ Text Box và đặt tên cho Text box (cách đặt tên như đặt tên khung ảnh)
-2/ Khai báo trong sheet Khai báo
-3/ Thực hiện in bình thường

Hy vọng ứng dụng sẽ hữu ích với bạn

Thân!
 
Upvote 0
Đã cập nhật phiên bản In Form New 2 để các bạn có thể sử dụng TextBox điền số liệu

Với cách làm này bạn có thể sử dụng in thẻ như ý muốn và cách khai báo như khai báo khung ảnh, tức là bạn cần làm theo 3 bước:

-1/ Vẽ Text Box và đặt tên cho Text box (cách đặt tên như đặt tên khung ảnh)
-2/ Khai báo trong sheet Khai báo
-3/ Thực hiện in bình thường

Hy vọng ứng dụng sẽ hữu ích với bạn

Thân!
Cảm ơn dhn46 nhiệt tình giúp đỡ
 
Upvote 0
Chào bạn,

Không có gì đâu bạn, cũng là điều nên làm bởi học từ GPE nên cũng muốn đóng góp cho cộng đồng dù không được nhiều.

Bạn Test và phản hồi nhé.
dhn46 thân,
Sau một hồi mày mò cũng ổn rồi. chỉnh sửa khung textbox, giờ mới hiểu 1 ít. Nhưng giờ muốn các thẻ khít với nhau, chứ không cần khoảng cách mả chưa mò ra.
Cảm ơn các tiền bối nhiều
 
Upvote 0
Web KT

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

Back
Top Bottom