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ái này rất hay,co thể ứng dụng vao in hd rất nhanh,đúng cái minh can.Mình sẽ xài và góp y!
 
Upvote 0
Chào bạn, mình gởi file ảnh minh họa từng sheet. Nhờ bạn chỉ giúp nguyên nhân hình và logo ko show được.
 

File đính kèm

  • GPE help.docx
    682.2 KB · Đọc: 8
Upvote 0
Chào bạn,

Nhìn hình thì chịu bạn ah. Vì cần biết bạn đặt thông số như thế nào, tên ảnh như thế nào cũng như format các Object trên sheet.

Bạn có thể gửi 1 file ví dụ và 1 ít ảnh ví dụ của bạn để tôi xem được không? Chắc có cách giải quyết cho bạn.
 
Upvote 0
Gởi bạn file đính kèm. File ảnh là jpg và được lưu theo Code

Chào bạn,

Nhìn hình thì chịu bạn ah. Vì cần biết bạn đặt thông số như thế nào, tên ảnh như thế nào cũng như format các Object trên sheet.

Bạn có thể gửi 1 file ví dụ và 1 ít ảnh ví dụ của bạn để tôi xem được không? Chắc có cách giải quyết cho bạn.
 
Upvote 0
Chào bạn, Làm sao để mình có thể in thẻ học sinh 2 mặt ạ?
1 lần em in 8 thẻ, trên exel
THE HS ,,.jpg
Em dùng máy Epson T60
Cảm ơn các bạn tư vấn.
 
Upvote 0
Chào bạn, Làm sao để mình có thể in thẻ học sinh 2 mặt ạ?
1 lần em in 8 thẻ, trên exel
View attachment 150183
Em dùng máy Epson T60
Cảm ơn các bạn tư vấn.

Chào bạn,

Tiện ích sẽ giúp bạn tạo Form thẻ như ý song để in 2 mặt thì bạn cần tự căn chỉnh lề in cho hợp lý. Tôi nghĩ việc căn chỉnh này sẽ không quá khó khăn.
 
Upvote 0
Tiện ích sẽ giúp bạn tạo Form thẻ như ý song để in 2 mặt thì bạn cần tự căn chỉnh lề in cho hợp lý. Tôi nghĩ việc căn chỉnh này sẽ không quá khó khăn.[/QUOTE]
Em cũng có như cầu như này ah
Đã căn chỉnh hết rời
Chì cần in 1 lần hai mặt,em có thêm mặt phụ hướng dẫn sử dụng nữa,và mỗi lần in được 9 thẻ,em muốn sau khi in 9 thẻ thì nó nhảy tiếp đến 10
Tức là số thứ tự 1 lần in là đến 9 và nó link sang tên người bên sheet kia
Nhờ anh chỉnh giúp em như sau ah:
In 1 lần 2 mặt ,do form có số lượng là 9,nên sau khi in hết 1 tờ nó tự động thêm vào cái hàng số thứ tự bên phải,tức là số 1 đó sẽ là số 10 để cho các hàng kế tiếp nhảy lần lượt luôn,và in cho đến khi hết cái sheet bên kia,sheet bên kia sẽ ghi stt nhân viên tương ứng
Em cảm ơn
bác tải link này giúp em với,em up lên nhưng báo chỉ co 1Mb cho toàn bộ nên không up được
https://drive.google.com/file/d/0B3x_jyEnLctsdkNPb01ldkZvZEU/view?usp=sharing
 
Lần chỉnh sửa cuối:
Upvote 0
làm ơn cho em hỏi có cách nào tạo kết quả nhanh hơn không, in khoảng 500 thẻ thì rất là lâu
 
Upvote 0
Chào bạn, cho mình hỏi code để add ảnh vào shape được không? Vì mình muốn tạo file danh sách nhân viên, ở phần ảnh mình muốn tạo shape. Làm cách nào để ảnh tự vào shape theo danh sách của mình???. Hiện tại mình đang sử dụng cách của thầy ndu nhưng ảnh nó add vào trực tiếp cell dẫn đến không có đường viền giữa các ảnh.
 
Upvote 0
Chào bạn, cho mình hỏi code để add ảnh vào shape được không? Vì mình muốn tạo file danh sách nhân viên, ở phần ảnh mình muốn tạo shape. Làm cách nào để ảnh tự vào shape theo danh sách của mình???. Hiện tại mình đang sử dụng cách của thầy ndu nhưng ảnh nó add vào trực tiếp cell dẫn đến không có đường viền giữa các ảnh.
Bạn add vào shape bình thường.

Đặt tên cho shape và khai báo.

Bạn xem video để rõ cách làm.
 
Upvote 0
Bạn add vào shape bình thường.

Đặt tên cho shape và khai báo.

Bạn xem video để rõ cách làm.

À cái đó thì mình đã làm được rồi nhưng cho mình hỏi code vba để add ảnh vào shape là gì vậy bạn
Bạn xem file giúp mình nhé.
 

File đính kèm

  • Hoi dap.xlsm
    13.8 KB · Đọc: 12
Lần chỉnh sửa cuối:
Upvote 0
À cái đó thì mình đã làm được rồi nhưng cho mình hỏi code vba để add ảnh vào shape là gì vậy bạn
Đây là toàn bộ Fuction gán hình vào shape
Mã:
Public Function LinkPic(LinkFolder As String, PartPicName As String, Shp As String)
    On Error Resume Next
    Dim fso, f, f1, ten_tep, ok, tenanh
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f = fso.GetFolder(LinkFolder)
    Set fc = f.Files
    ok = False
    If Right(LinkFolder, 1) <> "\" Then
        LinkFolder = LinkFolder & "\"
    End If
    For Each f1 In fc
        ten_tep = f1.Name
        If UCase(ten_tep) = UCase(PartPicName & ".jpg") Or _
           UCase(ten_tep) = UCase(PartPicName & ".bmp") Or _
           UCase(ten_tep) = UCase(PartPicName & ".png") Then
            tenanh = ten_tep
            ok = True
            Exit For
        End If
    Next
    If ok Then
        Sheets(Sheet1.[C1].Value).Shapes(Shp).Fill.Visible = msoTrue
        Sheets(Sheet1.[C1].Value).Shapes(Shp).Fill.UserPicture LinkFolder & tenanh
    Else
        Sheets(Sheet1.[C1].Value).Shapes(Shp).Fill.Visible = msoFalse
    End If

Có tham số nên phức tạp hơn 1 chút.

Để dễ dàng thì bạn ghi macro lại sẽ rõ.
 
Upvote 0
Bạn xem giúp file đính kèm ở trên của mình nhé.
 
Upvote 0
Bạn xem giúp file đính kèm ở trên của mình nhé.
Đơn giản thì bạn dùng cài này

Mã:
Sub AddPic()


On Error Resume Next
Dim Cls As Range
Dim LinkFolder As String
    'Dien Link Folder chua anh o day
    LinkFolder = "D:\"
    'Vung code là A4:A22 => Thay doi cho phu hop
    For Each Cls In [A4:A22]
        ActiveSheet.Shapes.AddShape(msoShapeRectangle, Cls.Offset(, 8).Left + 5, Cls.Offset(, 8).Top + 3, Cls.Offset(, 8).Width * 0.9, Cls.Offset(, 8).Height * 0.8).Select
        Selection.ShapeRange.Fill.UserPicture LinkFolder & Cls & ".jpg"
    Next
    
End Sub
 
Upvote 0
Đơn giản thì bạn dùng cài này

Mã:
Sub AddPic()


On Error Resume Next
Dim Cls As Range
Dim LinkFolder As String
    'Dien Link Folder chua anh o day
    LinkFolder = "D:\"
    'Vung code là A4:A22 => Thay doi cho phu hop
    For Each Cls In [A4:A22]
        ActiveSheet.Shapes.AddShape(msoShapeRectangle, Cls.Offset(, 8).Left + 5, Cls.Offset(, 8).Top + 3, Cls.Offset(, 8).Width * 0.9, Cls.Offset(, 8).Height * 0.8).Select
        Selection.ShapeRange.Fill.UserPicture LinkFolder & Cls & ".jpg"
    Next
    
End Sub

Mình làm nó chỉ chèn shape mà không chèn ảnh?
 
Upvote 0
Bạn ơi. Mình rất cảm ơn bạn đã chia sẽ tiện ích.
Cho mình hỏi:
- Mình in thẻ HỌC SINH dùng "In Form có lặp lại" .
+ Mình in 2 mặt trên 1 tờ giấy, mặt trước mặt sau như nhau, mỗi lần in 1 mặt giấy A4 mình in được 8 thẻ HS. Vậy làm cách nào mình có thể in 2 mặt giống nhau.
Ví du: Mặt trước NGUYỄN VĂN A THÌ MẶT SAU CŨNG NGUYỄN VĂN A

+ Mình muốn in ra Sheet Kết Quả có thể được 2 trang giấy a4 như hình bên dưới.

Mình trân trọng cảm ơn các bạn đã quan tâm , giúp đỡ. Nếu có thể Teamview giúp mình. :notworthy:
 

File đính kèm

  • Capture.jpg
    Capture.jpg
    74.3 KB · Đọc: 63
Upvote 0
Bác ơi cho em hỏi sao sheet KQ cái form nó không bắt đầu từ A1 luôn mà toàn từ cột B3 vậy.
 
Upvote 0
Đây bạn xem file giúp mình nhé.
 

File đính kèm

  • In Form co lap lai - Copy.rar
    739.8 KB · Đọc: 36
Upvote 0
Đây bạn xem file giúp mình nhé.
Tôi đã đọc tin nhắn của bạn và đã trả lời. Bạn không đọc kỹ từng từ?

Trong đó tôi có nói Scan mẫu giấy theo tỷ lệ 1:1.

Khi bạn chèn vào Excel cũng theo tỷ lệ 1:1.

File của bạn tôi thấy ảnh méo xẹo như thế kia thì làm sao in ko lệch.

Bạn chèn làm sao để in 1 cái giấy khen nó trùng khít phôi thì bạn áp dụng in form sẽ chuẩn.
 
Upvote 0
Web KT
Back
Top Bottom