Nhờ hướng dẫn tạo macro in hàng loạt phiếu xuất hàng (1 người xem)

  • Thread starter Thread starter kimusd
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

kimusd

Thành viên mới
Tham gia
5/8/12
Bài viết
40
Được thích
2
Mình tìm được file này trên mạng. Công việc của mình cần in 1 lần nhiều phiếu xuất hàng nên ko tiện ngồi chọn từng phiếu rồi bấm lệnh in được. Nhờ mọi người giúp mình cách tạo macro để có thể in tự động hàng loạt phiếu theo danh sách đã chọn. Ví dụ mình muốn in từ phiếu 1 - 20 hoặc bất cứ số phiếu nào cũng được. Hoặc là tự động in toàn bộ phiếu từ 1 đến hết cũng được.
Ngoài ra để tiết kiệm mình muốn chỉnh trang in này thành 2 phiếu để in gọn 2 phiếu trong 1 trang a4 thì ngoài cách copy xuống 1 phiếu bên dưới thì mọi người có cách nào hay hơn thì chỉ mình mới.
 
1/ File bạn đính kèm có 2 macro: Một để in phiếu bán hàng sau khi nhập nội dung trực tiếp vào Form phiếu bán hàng.
Một macro để ghi dữ liệu đã nhập từ Form phiếu bán hàng sang bảng "LỊCH SỬ BÁN HÀNG" ở sheet "Chi tiet PBH".
2/ Công việc của bạn cần:
In phiếu xuất hàng (01 hoặc nhiều phiếu cùng lúc) dựa trên một cơ sở dữ liệu đã có (danh sách các phiếu).
3/ Việc viết macro cho yêu cầu của bạn thì phải cần file cụ thể, form cụ thể (File dữ liệu thật của bạn).
Ngoài ra, yêu cầu in 2 phiếu/ trang A4 thì đơn giản nhất là bạn tạo 2 Form phiếu xuất hàng trên 1 trang A4 là được.
Vậy nên, trước hết bạn gửi file của bạn lên để mọi người xem giúp bạn. Còn file bạn đã đính kèm ở bài #1 thì để tham khảo.
 
1/ File bạn đính kèm có 2 macro: Một để in phiếu bán hàng sau khi nhập nội dung trực tiếp vào Form phiếu bán hàng.
Một macro để ghi dữ liệu đã nhập từ Form phiếu bán hàng sang bảng "LỊCH SỬ BÁN HÀNG" ở sheet "Chi tiet PBH".
2/ Công việc của bạn cần:
In phiếu xuất hàng (01 hoặc nhiều phiếu cùng lúc) dựa trên một cơ sở dữ liệu đã có (danh sách các phiếu).
3/ Việc viết macro cho yêu cầu của bạn thì phải cần file cụ thể, form cụ thể (File dữ liệu thật của bạn).
Ngoài ra, yêu cầu in 2 phiếu/ trang A4 thì đơn giản nhất là bạn tạo 2 Form phiếu xuất hàng trên 1 trang A4 là được.
Vậy nên, trước hết bạn gửi file của bạn lên để mọi người xem giúp bạn. Còn file bạn đã đính kèm ở bài #1 thì để tham khảo.
Đây là file của mình, bạn giúp mình nhé. Ban đầu mình úp file kia lên vì muốn nhờ hướng dẫn cách tạo macro, sau đó mình học theo đó tự làm macro, nếu sau này có cần thay đổi gì thì mình tự làm cũng được, vì mình ko rành về macro cho lắm nên muốn học. Nhờ bạn giúp đỡ. Ko biết sao mình ko úp file lên đc nữa. Mình sgare link bạn xem giúp mình nha
https://drive.google.com/file/d/0B0L1He2tzg9LMjJVRGNBUTlyUHM/view?usp=drivesdk
 
Đây là file của mình, bạn giúp mình nhé. Ban đầu mình úp file kia lên vì muốn nhờ hướng dẫn cách tạo macro, sau đó mình học theo đó tự làm macro, nếu sau này có cần thay đổi gì thì mình tự làm cũng được, vì mình ko rành về macro cho lắm nên muốn học. Nhờ bạn giúp đỡ. Ko biết sao mình ko úp file lên đc nữa. Mình sgare link bạn xem giúp mình nha
https://drive.google.com/file/d/0B0L1He2tzg9LMjJVRGNBUTlyUHM/view?usp=drivesdk
Tại [K5] và [K6] của sheet "in PN" bạn nhập số phiếu cầu in (tương ứng với STT cột C của sheet "PNK")
Xem hình:
printt.jpg

Và thử đoạn sau:
PHP:
Sub InPNK()
Dim i As Long, p1, p2
p1 = Sheet2.Range("K5").Value
p2 = Sheet2.Range("K6").Value
If IsNumeric(p1) = False Or IsNumeric(p2) = False Then Exit Sub
If p1 > p2 Then Exit Sub
For i = p1 To p2
    'Sheet2.Range("B4").Value = i 'Không rõ tai cell [B4] lam gì?
    Sheet2.Range("J2").Value = i
    'Sheet2.PrintPreview 'To preview
    Sheet2.PrintOut From:=1, To:=1
Next
End Sub
p/s: Tôi thấy bạn sử dụng rất nhiều name (chắc có những cái không cần thiết) làm bảng tính chậm hơn và tăng dung lượng.
 
Tại [K5] và [K6] của sheet "in PN" bạn nhập số phiếu cầu in (tương ứng với STT cột C của sheet "PNK")
Xem hình:
View attachment 165884

Và thử đoạn sau:
PHP:
Sub InPNK()
Dim i As Long, p1, p2
p1 = Sheet2.Range("K5").Value
p2 = Sheet2.Range("K6").Value
If IsNumeric(p1) = False Or IsNumeric(p2) = False Then Exit Sub
If p1 > p2 Then Exit Sub
For i = p1 To p2
    'Sheet2.Range("B4").Value = i 'Không rõ tai cell [B4] lam gì?
    Sheet2.Range("J2").Value = i
    'Sheet2.PrintPreview 'To preview
    Sheet2.PrintOut From:=1, To:=1
Next
End Sub
p/s: Tôi thấy bạn sử dụng rất nhiều name (chắc có những cái không cần thiết) làm bảng tính chậm hơn và tăng dung lượng.
Bạn ơi mình ko rành về macro lắm, chỉ mới làm thử lần đầu, mình chạy thử trên file mẫu mình gửi lên thì ok, nhưng khi áp dụng trên file gốc của mình thì ko được. Bạn cho minh hỏi, nếu bây giờ file mình có nhiều sheet thì đoạn code trên mình sẽ thay đổi như thế nào? Giả sử như mình muốn dùng đoạn code này để in phiếu xuất kho (nằm trên 1 sheet khác thì mình phải sửa chỗ nào hả bạn? mình thử đổi sheet2 trong đoạn code trên thành sheet7 thì ko được (sheet mình cần in nằm ở vị trí thứ 7). Đồng thời mình vừa chỉnh lại file thành 2 phiếu nhập kho trên 1 trang, nhưng nó chỉ chạy được phiếu đầu tiên, còn phiếu sau nó ra y chang như phiếu 1, nhờ bạn giúp mình chỉnh công thức lại được ko? Ko hẳn là mình ko muốn up file lên mà mình muốn hiểu đoạn code để vận dụng vào những trường hợp khác nhau. Bạn giúp mình nhé. Cảm ơn bạn nhiều.
https://drive.google.com/file/d/0B0L1He2tzg9LQjZ4ZS00YjUwYjg/view?usp=drivesdk
 
Tại [K5] và [K6] của sheet "in PN" bạn nhập số phiếu cầu in (tương ứng với STT cột C của sheet "PNK")
Xem hình:
View attachment 165884

Và thử đoạn sau:
PHP:
Sub InPNK()
Dim i As Long, p1, p2
p1 = Sheet2.Range("K5").Value
p2 = Sheet2.Range("K6").Value
If IsNumeric(p1) = False Or IsNumeric(p2) = False Then Exit Sub
If p1 > p2 Then Exit Sub
For i = p1 To p2
    'Sheet2.Range("B4").Value = i 'Không rõ tai cell [B4] lam gì?
    Sheet2.Range("J2").Value = i
    'Sheet2.PrintPreview 'To preview
    Sheet2.PrintOut From:=1, To:=1
Next
End Sub
p/s: Tôi thấy bạn sử dụng rất nhiều name (chắc có những cái không cần thiết) làm bảng tính chậm hơn và tăng dung lượng.
Bạn ơi mình ko rành về macro lắm, chỉ mới làm thử lần đầu, mình chạy thử trên file mẫu mình gửi lên thì ok, nhưng khi áp dụng trên file gốc của mình thì ko được. Bạn cho minh hỏi, nếu bây giờ file mình có nhiều sheet thì đoạn code trên mình sẽ thay đổi như thế nào? Giả sử như mình muốn dùng đoạn code này để in phiếu xuất kho (nằm trên 1 sheet khác thì mình phải sửa chỗ nào hả bạn? mình thử đổi sheet2 trong đoạn code trên thành sheet7 thì ko được (sheet mình cần in nằm ở vị trí thứ 7). Đồng thời mình vừa chỉnh lại file thành 2 phiếu nhập kho trên 1 trang, nhưng nó chỉ chạy được phiếu đầu tiên, còn phiếu sau nó ra y chang như phiếu 1, nhờ bạn giúp mình chỉnh công thức lại được ko? Ko hẳn là mình ko muốn up file lên mà mình muốn hiểu đoạn code để vận dụng vào những trường hợp khác nhau. Bạn giúp mình nhé. Cảm ơn bạn nhiều.
https://drive.google.com/file/d/0B0L1He2tzg9LQjZ4ZS00YjUwYjg/view?usp=drivesdk
 
@kimusd:
Bạn xem file đính kèm nhé.
PHP:
Sub InPNK()
Dim i As Long, p1, p2
'Sheet2 là name cua worksheet trong vba, còn "in PN" là tên cua sheet nhìn thây trên tab sheet.
'MsgBox Sheet2.Name 'Tra vê "in PN"
'02 cách viêt: Sheet2 = sheets("in PN")
p1 = Sheet2.Range("K5").Value
'Hoac viêt là:
'p1 = Sheets("in PN").Range("K5").Value
p2 = Sheet2.Range("K6").Value
If IsNumeric(p1) = False Or IsNumeric(p2) = False Then Exit Sub
If p1 > p2 Then Exit Sub
For i = p1 To p2 Step 2 'Step = 2 vì in 02 phiêu, [B58]=[B4]+1
    Sheet2.Range("B4").Value = i 'Truyên STT vao [B4]
    Sheet2.PrintPreview 'To preview
'    Sheet2.PrintOut From:=1, To:=1
Next
End Sub

sheet2.jpg

p/s: Bạn chú ý mục số 3 tôi viết ở bài #2.
Tôi sắp hết dung lượng cho phép đính kèm file rồi. Ưu tiên lắm mới up file lại cho bạn đó.
 

File đính kèm

@kimusd:
Bạn xem file đính kèm nhé.
PHP:
Sub InPNK()
Dim i As Long, p1, p2
'Sheet2 là name cua worksheet trong vba, còn "in PN" là tên cua sheet nhìn thây trên tab sheet.
'MsgBox Sheet2.Name 'Tra vê "in PN"
'02 cách viêt: Sheet2 = sheets("in PN")
p1 = Sheet2.Range("K5").Value
'Hoac viêt là:
'p1 = Sheets("in PN").Range("K5").Value
p2 = Sheet2.Range("K6").Value
If IsNumeric(p1) = False Or IsNumeric(p2) = False Then Exit Sub
If p1 > p2 Then Exit Sub
For i = p1 To p2 Step 2 'Step = 2 vì in 02 phiêu, [B58]=[B4]+1
    Sheet2.Range("B4").Value = i 'Truyên STT vao [B4]
    Sheet2.PrintPreview 'To preview
'    Sheet2.PrintOut From:=1, To:=1
Next
End Sub

View attachment 166015

p/s: Bạn chú ý mục số 3 tôi viết ở bài #2.
Tôi sắp hết dung lượng cho phép đính kèm file rồi. Ưu tiên lắm mới up file lại cho bạn đó.
Tôi sắp hết dung lượng cho phép đính kèm file rồi. Ưu tiên lắm mới up file lại cho bạn đó.[/QUOTE]
Yeah, mình sửa tên sheet trong macro vào file của mình chạy được ngon lành luôn rồi bạn ơi. Vui quá. Cảm ơn bạn nhiều lắm lắm nha
 
@kimusd:
Bạn xem file đính kèm nhé.
PHP:
Sub InPNK()
Dim i As Long, p1, p2
'Sheet2 là name cua worksheet trong vba, còn "in PN" là tên cua sheet nhìn thây trên tab sheet.
'MsgBox Sheet2.Name 'Tra vê "in PN"
'02 cách viêt: Sheet2 = sheets("in PN")
p1 = Sheet2.Range("K5").Value
'Hoac viêt là:
'p1 = Sheets("in PN").Range("K5").Value
p2 = Sheet2.Range("K6").Value
If IsNumeric(p1) = False Or IsNumeric(p2) = False Then Exit Sub
If p1 > p2 Then Exit Sub
For i = p1 To p2 Step 2 'Step = 2 vì in 02 phiêu, [B58]=[B4]+1
    Sheet2.Range("B4").Value = i 'Truyên STT vao [B4]
    Sheet2.PrintPreview 'To preview
'    Sheet2.PrintOut From:=1, To:=1
Next
End Sub

View attachment 166015

p/s: Bạn chú ý mục số 3 tôi viết ở bài #2.
Tôi sắp hết dung lượng cho phép đính kèm file rồi. Ưu tiên lắm mới up file lại cho bạn đó.
Bạn ơi, nhờ bạn giúp mình thêm 1 cái nữa là bỏ luôn bước print preview mà in luôn được ko bạn, hiện giờ khi bấm vào nút in thì nó hiện ra cửa số print preview, bấm vào print thì ra tiếp hộp thoại in OK tiếp nữa mới in được. Cứ thế 100 phiếu thì phải bấm chuột 200 lần thì mới xong, ko bỏ máy làm việc khác được. Bạn giúp mình thêm cái này nữa nha. Cảm ơn bạn nhiều lắm.
 
Bạn ơi, nhờ bạn giúp mình thêm 1 cái nữa là bỏ luôn bước print preview mà in luôn được ko bạn, hiện giờ khi bấm vào nút in thì nó hiện ra cửa số print preview, bấm vào print thì ra tiếp hộp thoại in OK tiếp nữa mới in được. Cứ thế 100 phiếu thì phải bấm chuột 200 lần thì mới xong, ko bỏ máy làm việc khác được. Bạn giúp mình thêm cái này nữa nha. Cảm ơn bạn nhiều lắm.
Bạn nên mua sách, tìm tài liệu để học, tích lũy một chút căn bản về cốt két...
Khi thêm dấu nháy ' trước dòng lệnh thì sẽ chuyển dòng lệnh đó thành dạng ghi chú (comment block).
Vậy, ở phía cuối có 2 dòng:
PHP:
    Sheet2.PrintPreview 'To preview
'    Sheet2.PrintOut From:=1, To:=1
Ta sửa lại như bên dưới:
PHP:
Sub InPNK()
Dim i As Long, p1, p2
'Sheet2 là name cua worksheet trong vba, còn "in PN" là tên cua sheet nhìn thây trên tab sheet.
'MsgBox Sheet2.Name 'Tra vê "in PN"
'02 cách viêt: Sheet2 = sheets("in PN")
p1 = Sheet2.Range("K5").Value
'Hoac viêt là:
'p1 = Sheets("in PN").Range("K5").Value
p2 = Sheet2.Range("K6").Value
If IsNumeric(p1) = False Or IsNumeric(p2) = False Then Exit Sub
If p1 > p2 Then Exit Sub
For i = p1 To p2 Step 2 'Step = 2 vì in 02 phiêu, [B58]=[B4]+1
    Sheet2.Range("B4").Value = i 'Truyên STT vao [B4]
'    Sheet2.PrintPreview 'To preview
    Sheet2.PrintOut From:=1, To:=1
Next
End Sub
 
Bạn nên mua sách, tìm tài liệu để học, tích lũy một chút căn bản về cốt két...
Khi thêm dấu nháy ' trước dòng lệnh thì sẽ chuyển dòng lệnh đó thành dạng ghi chú (comment block).
Vậy, ở phía cuối có 2 dòng:
PHP:
    Sheet2.PrintPreview 'To preview
'    Sheet2.PrintOut From:=1, To:=1
Ta sửa lại như bên dưới:
PHP:
Sub InPNK()
Dim i As Long, p1, p2
'Sheet2 là name cua worksheet trong vba, còn "in PN" là tên cua sheet nhìn thây trên tab sheet.
'MsgBox Sheet2.Name 'Tra vê "in PN"
'02 cách viêt: Sheet2 = sheets("in PN")
p1 = Sheet2.Range("K5").Value
'Hoac viêt là:
'p1 = Sheets("in PN").Range("K5").Value
p2 = Sheet2.Range("K6").Value
If IsNumeric(p1) = False Or IsNumeric(p2) = False Then Exit Sub
If p1 > p2 Then Exit Sub
For i = p1 To p2 Step 2 'Step = 2 vì in 02 phiêu, [B58]=[B4]+1
    Sheet2.Range("B4").Value = i 'Truyên STT vao [B4]
'    Sheet2.PrintPreview 'To preview
    Sheet2.PrintOut From:=1, To:=1
Next
End Sub
Cảm ơn bạn nhiều lắm luôn. Mình làm được rồi. Giờ mình bấm in là là làm việc khác ngon lành chẳng phải ngồi bấm từng phiếu nữa. Mấy cái macro làm mình thấy chuyên nghiệp hẳn lên. Cảm ơn bạn nhiều nha
 
Tại [K5] và [K6] của sheet "in PN" bạn nhập số phiếu cầu in (tương ứng với STT cột C của sheet "PNK")
Xem hình:
View attachment 165884

Và thử đoạn sau:
PHP:
Sub InPNK()
Dim i As Long, p1, p2
p1 = Sheet2.Range("K5").Value
p2 = Sheet2.Range("K6").Value
If IsNumeric(p1) = False Or IsNumeric(p2) = False Then Exit Sub
If p1 > p2 Then Exit Sub
For i = p1 To p2
    'Sheet2.Range("B4").Value = i 'Không rõ tai cell [B4] lam gì?
    Sheet2.Range("J2").Value = i
    'Sheet2.PrintPreview 'To preview
    Sheet2.PrintOut From:=1, To:=1
Next
End Sub
p/s: Tôi thấy bạn sử dụng rất nhiều name (chắc có những cái không cần thiết) làm bảng tính chậm hơn và tăng dung lượng.

Bạn ơi, thật ngại quá lại lên đây phiền bạn lần nữa. nếu muốn in thành 2 bản (hoặc có thể tùy chọn số lượng bản cần in) thì thêm đoạn code như nào hả bạn. Bạn giúp mình thêm lần này nữa nha.
 
Nếu in 2 bản bạn thay đoạn code này
Mã:
Sheet2.PrintOut From:=1, To:=1
thành
Mã:
Sheet2.PrintOut From:=1, To:=1, Copies:=2

Còn muốn nhập số trang in thì bạn phải nhập qua inputbox thông qua 1 biến là ok thôi
 
Bạn ơi, thật ngại quá lại lên đây phiền bạn lần nữa. nếu muốn in thành 2 bản (hoặc có thể tùy chọn số lượng bản cần in) thì thêm đoạn code như nào hả bạn. Bạn giúp mình thêm lần này nữa nha.
Bạn hỏi thì cứ hỏi thôi. Không có gì ái ngại.
Bạn thử đoạn dưới nhé.
Mã:
Sub InPNK()
Dim i As Long, p1, p2, cp
p1 = Sheet2.Range("K5").Value
p2 = Sheet2.Range("K6").Value
cp = Sheet2.Range("K7").Value 'Nhập số bản cần in vào cell [K7] của sheets "in PN"
If IsNumeric(p1) = False Or IsNumeric(p2) = False Then Exit Sub
If p1 > p2 Then Exit Sub
If cp = "" Or IsNumeric(cp) = False Then cp = 1
For i = p1 To p2 Step 2
    Sheet2.Range("B4").Value = i
'    Sheet2.PrintPreview 'To preview
    Sheet2.PrintOut From:=1, To:=1, Copies:=cp
Next
End Sub
 
các cao thủ giúp mình với, như bạn trên cần in phiếu nhập kho hàng loạt đỡ phải chọn, mình cũng muốn in hàng loạt, cũng thử học áp dụng macro trên youtube để áp dụng cho file của mình nhưng k thành công, vì vậy nhờ các bạn giúp mình tao macro cho file như đính kèm với ạ????
mình cảm ơn nhiều
 

File đính kèm

Hi các cao thủ, mình gửi lại file sau khi mình đã sửa nhưng vẫn không thể tự tạo macro khi dựa vào file của bạn trên hướng dẫn, vì vậy mong các bạn giúp em nhé
 

File đính kèm

Chào các anh chị em GPE,

Mình có file đính kèm.
Mình cần in hàng loạt "sheet In" theo số thứ tự ô H1. Mỗi số thứ tự in 1 phiếu.
Sheet In này nó lấy tham chiếu từ Sheet Data bên cạnh theo tham chiếu ở ô H1 bên sheet In.
Mong anh chị giúp mình 1 Macro để khi mình nhấn nút In thì nó in theo 1 danh sách số thứ tự mình mong muốn. Ví dụ in từ số 5 tới số 12 bên cột A của sheet Data.
Cảm ơn anh chị!
 

File đính kèm

Chào các anh chị em GPE,

Mình có file đính kèm.
Mình cần in hàng loạt "sheet In" theo số thứ tự ô H1. Mỗi số thứ tự in 1 phiếu.
Sheet In này nó lấy tham chiếu từ Sheet Data bên cạnh theo tham chiếu ở ô H1 bên sheet In.
Mong anh chị giúp mình 1 Macro để khi mình nhấn nút In thì nó in theo 1 danh sách số thứ tự mình mong muốn. Ví dụ in từ số 5 tới số 12 bên cột A của sheet Data.
Cảm ơn anh chị!
Vậy số thứ tự mình mong muốn ấy gõ vào chỗ nào?
 
Bạn tham khảo code này xem:
Sub Printsheet()
Dim startNum As Integer
Dim endNum As Integer
Dim maxNum As Integer
Dim lastRow As Long
lastRow = Sheets("Data").Cells(Rows.Count, "A").End(xlUp).Row
maxNum = Application.WorksheetFunction.Max(Sheets("Data").Range("A1:A" & lastRow))
startNum = InputBox("Nhap so bat dau:")
endNum = InputBox("Nhap so ket thuc:")
If startNum > endNum Or endNum > maxNum Then
MsgBox "So in khong hop le, hay kiem tra lai!"
Exit Sub
End If
For i = startNum To endNum
Sheets("in").Range("H1").Value = i
Sheets("in").PrintOut Copies:=1, Preview:=False, PrintToFile:=False
Next i
End Sub

Số bắt đầu và kết thúc được nhập từ Msgbox, số kết thúc phải nhỏ hơn số trong Data.
In bằng máy in mặc định.

 

File đính kèm

Vậy số thứ tự mình mong muốn ấy gõ vào chỗ nào?
Chào bạn,

Có thể tạo sheet, có list số thứ tự , rồi copy dãy số thứ tự cần in bên sheet Data sang list này.
Do mình ko rành VBA, nên chưa làm cái sheet list số thứ tự đó
Rất mong bạn giúp ah!
Mình luôn biết ơn!
Bài đã được tự động gộp:

Bạn tham khảo code này xem:
Sub Printsheet()
Dim startNum As Integer
Dim endNum As Integer
Dim maxNum As Integer
Dim lastRow As Long
lastRow = Sheets("Data").Cells(Rows.Count, "A").End(xlUp).Row
maxNum = Application.WorksheetFunction.Max(Sheets("Data").Range("A1:A" & lastRow))
startNum = InputBox("Nhap so bat dau:")
endNum = InputBox("Nhap so ket thuc:")
If startNum > endNum Or endNum > maxNum Then
MsgBox "So in khong hop le, hay kiem tra lai!"
Exit Sub
End If
For i = startNum To endNum
Sheets("in").Range("H1").Value = i
Sheets("in").PrintOut Copies:=1, Preview:=False, PrintToFile:=False
Next i
End Sub

Số bắt đầu và kết thúc được nhập từ Msgbox, số kết thúc phải nhỏ hơn số trong Data.
In bằng máy in mặc định.

Cảm ơn bạn nhiều!
Mình thử thấy quá OK, cảm ơn bạn thật nhiều!
Mình sẽ làm cái nút nhấn IN cho nó nhanh và pro hơn.
Thân!
 
Lần chỉnh sửa cuối:
Chào bạn,

Có thể tạo sheet, có list số thứ tự , rồi copy dãy số thứ tự cần in bên sheet Data sang list này.
Do mình ko rành VBA, nên chưa làm cái sheet list số thứ tự đó
Rất mong bạn giúp ah!
Mình luôn biết ơn!
Bài đã được tự động gộp:


Cảm ơn bạn nhiều! Mình sẽ chạy code này và báo lại kết quả nhé!
Thân!
Bạn thử code và cách làm của bài #19 chưa? Sao không thấy phản hồi?
Nếu được rồi thì thôi.
 
Đây là file của mình, bạn giúp mình nhé. Ban đầu mình úp file kia lên vì muốn nhờ hướng dẫn cách tạo macro, sau đó mình học theo đó tự làm macro, nếu sau này có cần thay đổi gì thì mình tự làm cũng được, vì mình ko rành về macro cho lắm nên muốn học. Nhờ bạn giúp đỡ. Ko biết sao mình ko úp file lên đc nữa. Mình sgare link bạn xem giúp mình nha
https://drive.google.com/file/d/0B0L1He2tzg9LMjJVRGNBUTlyUHM/view?usp=drivesdk
Sao chia sẻ file lại để quyền truy cập thế, b làm đc rồi, cũng share để mn tham khảo đc k?
1681211526892.png
 
Bạn tham khảo code này xem:
Sub Printsheet()
Dim startNum As Integer
Dim endNum As Integer
Dim maxNum As Integer
Dim lastRow As Long
lastRow = Sheets("Data").Cells(Rows.Count, "A").End(xlUp).Row
maxNum = Application.WorksheetFunction.Max(Sheets("Data").Range("A1:A" & lastRow))
startNum = InputBox("Nhap so bat dau:")
endNum = InputBox("Nhap so ket thuc:")
If startNum > endNum Or endNum > maxNum Then
MsgBox "So in khong hop le, hay kiem tra lai!"
Exit Sub
End If
For i = startNum To endNum
Sheets("in").Range("H1").Value = i
Sheets("in").PrintOut Copies:=1, Preview:=False, PrintToFile:=False
Next i
End Sub

Số bắt đầu và kết thúc được nhập từ Msgbox, số kết thúc phải nhỏ hơn số trong Data.
In bằng máy in mặc định.

Ah, mà bạn ơi, nếu mình muốn in theo 1 dãy số thứ tự không liên tục thì code này phải như thế nào? Ví dụ in 4, 5, 6, 8, 9, 11, 12
Mong bạn chỉ thêm.
Cảm ơn bạn!
 
Dược rồi bạn!
Cảm ơn bạn!
Cũng với cách dùng InputBox nhưng có 1 kiểu nhập trang in linh hoạt hơn. Bạn có để ý hộp thoại in của Word không? Nó cho phép bạn gõ các trang in bằng cách: 1,2,5,8
hoặc bằng cách: 1-3
hoặc kết hợp: 1,3,5-8,10
 
Ah, mà bạn ơi, nếu mình muốn in theo 1 dãy số thứ tự không liên tục thì code này phải như thế nào? Ví dụ in 4, 5, 6, 8, 9, 11, 12
Mong bạn chỉ thêm.
Cảm ơn bạn!
Bạn dùng code sau (trong Inputbox có gợi ý cách nhập):
Rich (BB code):
Sub PrintMultiPage()
Dim aTemp As Variant, aPrint() As Variant, i&, j&, k&, pMax&, sInput$, sNote$
pMax = Sheets("Data").Cells(Rows.Count, "A").End(xlUp).Value
sNote = "Nhap tung trang in, VD: 5" & vbNewLine & "Hoac theo dang: 1,3,4,..." & vbNewLine & _
       "Hoac dang: 1-4" & vbNewLine & "Hoac ket hop: 1,3,5-8,10"
sInput = InputBox(sNote, "Kieu trang in")
On Error GoTo Thoat
If InStr(1, sInput, ",") Then
    aTemp = Split(sInput, ",")
    If InStr(1, sInput, "-") Then
        For i = 0 To UBound(aTemp)
            If InStr(1, aTemp(i), "-") Then
                For j = Left(aTemp(i), InStr(1, aTemp(i), "-") - 1) To Mid(aTemp(i), InStr(1, aTemp(i), "-") + 1)
                    k = k + 1: ReDim Preserve aPrint(1 To k)
                    aPrint(k) = j
                Next
            Else
                k = k + 1: ReDim Preserve aPrint(1 To k)
                aPrint(k) = aTemp(i)
            End If
        Next
    Else
        ReDim aPrint(1 To UBound(aTemp) + 1)
        For i = 0 To UBound(aTemp)
            aPrint(i + 1) = aTemp(i)
        Next
    End If
End If
For i = LBound(aPrint) To UBound(aPrint)
    Sheets("in").Range("H1").Value = aPrint(i)
    Sheets("in").PrintOut Copies:=1, Preview:=False, PrintToFile:=False
Next i
Thoat:
End Sub
 
Bạn dùng code sau (trong Inputbox có gợi ý cách nhập):
Rich (BB code):
Sub PrintMultiPage()
Dim aTemp As Variant, aPrint() As Variant, i&, j&, k&, pMax&, sInput$, sNote$
pMax = Sheets("Data").Cells(Rows.Count, "A").End(xlUp).Value
sNote = "Nhap tung trang in, VD: 5" & vbNewLine & "Hoac theo dang: 1,3,4,..." & vbNewLine & _
       "Hoac dang: 1-4" & vbNewLine & "Hoac ket hop: 1,3,5-8,10"
sInput = InputBox(sNote, "Kieu trang in")
On Error GoTo Thoat
If InStr(1, sInput, ",") Then
    aTemp = Split(sInput, ",")
    If InStr(1, sInput, "-") Then
        For i = 0 To UBound(aTemp)
            If InStr(1, aTemp(i), "-") Then
                For j = Left(aTemp(i), InStr(1, aTemp(i), "-") - 1) To Mid(aTemp(i), InStr(1, aTemp(i), "-") + 1)
                    k = k + 1: ReDim Preserve aPrint(1 To k)
                    aPrint(k) = j
                Next
            Else
                k = k + 1: ReDim Preserve aPrint(1 To k)
                aPrint(k) = aTemp(i)
            End If
        Next
    Else
        ReDim aPrint(1 To UBound(aTemp) + 1)
        For i = 0 To UBound(aTemp)
            aPrint(i + 1) = aTemp(i)
        Next
    End If
End If
For i = LBound(aPrint) To UBound(aPrint)
    Sheets("in").Range("H1").Value = aPrint(i)
    Sheets("in").PrintOut Copies:=1, Preview:=False, PrintToFile:=False
Next i
Thoat:
End Sub
Cảm ơn bạn đã nhiệt tình giúp đỡ mình nhiều lắm!
Mình mới mở lên, chưa thử code. Nhưng chắc sẽ chạy ok!

Mình không biết có tham lam quá không, khi được cái này đòi thêm cái khác. :)
Nhưng bạn ơi! Mình quên nói là mình phải lưu lại từng file được in ra nữa (quên mất vụ này). Nên mình có thêm vào sheet Data, cột M, tên file cần lưu, và ô M1 là ví dụ nơi ổ đĩa, thư mục sẽ lưu. (file đính kèm)
Nếu bạn không phiền, ráng giúp mình thêm đoạn code này với nhé!
Mình vô cùng biết ơn bạn!
 

File đính kèm

Bạn thử code sau:
Sub Printsheet()
Dim startNum As Integer
Dim endNum As Integer
Dim maxNum As Integer
Dim lastRow As Long
Dim FSO As Object
Dim Filename As String
Set FSO = CreateObject("scripting.FileSystemObject")
If FSO.FolderExists("D:\TAM") = True Then
Else
FSO.CreateFolder ("D:\TAM")
End If
Set FSO = Nothing
lastRow = Sheets("Data").Cells(Rows.Count, "A").End(xlUp).Row
maxNum = Application.WorksheetFunction.Max(Sheets("Data").Range("A1:A" & lastRow))
startNum = InputBox("Nhap so bat dau:")
endNum = InputBox("Nhap so ket thuc:")
If startNum > endNum Or endNum > maxNum Then
MsgBox "So in khong hop le, hay kiem tra lai!"
Exit Sub
End If
For i = startNum To endNum
Filename = Application.WorksheetFunction.VLookup(i, Sheets("Data").Range("A1:M" & lastRow), 13, False)
Sheets("in").Range("H1").Value = i
Sheets("in").ExportAsFixedFormat Type:=xlTypePDF, Filename:="D:\TAM\" & Filename & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Sheets("in").PrintOut Copies:=1, Preview:=False, PrintToFile:=False
Next i
End Sub

Thư mục D:\TAM mình để trong code đề phòng trường hợp vô tình sai cấu trúc trong ô M1. Nếu cần thay đổi thì nên thay đổi trong code. Hoặc tạo thư mục TAM trong thư mục chứa file excel cũng được.
File xuất dạng PDF cho dễ kiểm soát. Tên file nếu trùng sẽ ghi đè.
 

File đính kèm

Bạn thử code sau:
Sub Printsheet()
Dim startNum As Integer
Dim endNum As Integer
Dim maxNum As Integer
Dim lastRow As Long
Dim FSO As Object
Dim Filename As String
Set FSO = CreateObject("scripting.FileSystemObject")
If FSO.FolderExists("D:\TAM") = True Then
Else
FSO.CreateFolder ("D:\TAM")
End If
Set FSO = Nothing
lastRow = Sheets("Data").Cells(Rows.Count, "A").End(xlUp).Row
maxNum = Application.WorksheetFunction.Max(Sheets("Data").Range("A1:A" & lastRow))
startNum = InputBox("Nhap so bat dau:")
endNum = InputBox("Nhap so ket thuc:")
If startNum > endNum Or endNum > maxNum Then
MsgBox "So in khong hop le, hay kiem tra lai!"
Exit Sub
End If
For i = startNum To endNum
Filename = Application.WorksheetFunction.VLookup(i, Sheets("Data").Range("A1:M" & lastRow), 13, False)
Sheets("in").Range("H1").Value = i
Sheets("in").ExportAsFixedFormat Type:=xlTypePDF, Filename:="D:\TAM\" & Filename & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Sheets("in").PrintOut Copies:=1, Preview:=False, PrintToFile:=False
Next i
End Sub

Thư mục D:\TAM mình để trong code đề phòng trường hợp vô tình sai cấu trúc trong ô M1. Nếu cần thay đổi thì nên thay đổi trong code. Hoặc tạo thư mục TAM trong thư mục chứa file excel cũng được.
File xuất dạng PDF cho dễ kiểm soát. Tên file nếu trùng sẽ ghi đè.
Cảm ơn bạn!
Mà minh dùng code này nếu in số thứ tự không liên tục thì sẽ không được.
Nên mình dùng code của bạn Maika8008 đang ổn. Chỉ là thêm phần code lưu file.
Bài đã được tự động gộp:

Bạn dùng code sau (trong Inputbox có gợi ý cách nhập):
Rich (BB code):
Sub PrintMultiPage()
Dim aTemp As Variant, aPrint() As Variant, i&, j&, k&, pMax&, sInput$, sNote$
pMax = Sheets("Data").Cells(Rows.Count, "A").End(xlUp).Value
sNote = "Nhap tung trang in, VD: 5" & vbNewLine & "Hoac theo dang: 1,3,4,..." & vbNewLine & _
       "Hoac dang: 1-4" & vbNewLine & "Hoac ket hop: 1,3,5-8,10"
sInput = InputBox(sNote, "Kieu trang in")
On Error GoTo Thoat
If InStr(1, sInput, ",") Then
    aTemp = Split(sInput, ",")
    If InStr(1, sInput, "-") Then
        For i = 0 To UBound(aTemp)
            If InStr(1, aTemp(i), "-") Then
                For j = Left(aTemp(i), InStr(1, aTemp(i), "-") - 1) To Mid(aTemp(i), InStr(1, aTemp(i), "-") + 1)
                    k = k + 1: ReDim Preserve aPrint(1 To k)
                    aPrint(k) = j
                Next
            Else
                k = k + 1: ReDim Preserve aPrint(1 To k)
                aPrint(k) = aTemp(i)
            End If
        Next
    Else
        ReDim aPrint(1 To UBound(aTemp) + 1)
        For i = 0 To UBound(aTemp)
            aPrint(i + 1) = aTemp(i)
        Next
    End If
End If
For i = LBound(aPrint) To UBound(aPrint)
    Sheets("in").Range("H1").Value = aPrint(i)
    Sheets("in").PrintOut Copies:=1, Preview:=False, PrintToFile:=False
Next i
Thoat:
End Sub
Bạn ơi, sao mình copy file này vào ổ chung mạng LAN thì nó không in được, mặc dù không báo lỗi gì. Cũng file đó, nếu trên ổ D, hay C (máy của mình) thì chạy bình thường.
 
Bạn dùng code sau (trong Inputbox có gợi ý cách nhập):
Rich (BB code):
Sub PrintMultiPage()
Dim aTemp As Variant, aPrint() As Variant, i&, j&, k&, pMax&, sInput$, sNote$
pMax = Sheets("Data").Cells(Rows.Count, "A").End(xlUp).Value
sNote = "Nhap tung trang in, VD: 5" & vbNewLine & "Hoac theo dang: 1,3,4,..." & vbNewLine & _
       "Hoac dang: 1-4" & vbNewLine & "Hoac ket hop: 1,3,5-8,10"
sInput = InputBox(sNote, "Kieu trang in")
On Error GoTo Thoat
If InStr(1, sInput, ",") Then
    aTemp = Split(sInput, ",")
    If InStr(1, sInput, "-") Then
        For i = 0 To UBound(aTemp)
            If InStr(1, aTemp(i), "-") Then
                For j = Left(aTemp(i), InStr(1, aTemp(i), "-") - 1) To Mid(aTemp(i), InStr(1, aTemp(i), "-") + 1)
                    k = k + 1: ReDim Preserve aPrint(1 To k)
                    aPrint(k) = j
                Next
            Else
                k = k + 1: ReDim Preserve aPrint(1 To k)
                aPrint(k) = aTemp(i)
            End If
        Next
    Else
        ReDim aPrint(1 To UBound(aTemp) + 1)
        For i = 0 To UBound(aTemp)
            aPrint(i + 1) = aTemp(i)
        Next
    End If
End If
For i = LBound(aPrint) To UBound(aPrint)
    Sheets("in").Range("H1").Value = aPrint(i)
    Sheets("in").PrintOut Copies:=1, Preview:=False, PrintToFile:=False
Next i
Thoat:
End Sub
Bạn ơi, sao giờ mình áp dụng vào in với Data nhiều dòng hơn thì nó không chạy, không in được.
File đính kèm, bạn xem lại giúp mình với!
 

File đính kèm

Bạn ơi, sao giờ mình áp dụng vào in với Data nhiều dòng hơn thì nó không chạy, không in được.
File đính kèm, bạn xem lại giúp mình với!
Tôi không biết dòng lệnh in Sheets("in").PrintOut Copies:=1, Preview:=False, PrintToFile:=False hoạt động thế nào vì tôi không có máy in, còn tất cả các dòng lệnh còn lại đều chạy tốt.
 
Tôi không biết dòng lệnh in Sheets("in").PrintOut Copies:=1, Preview:=False, PrintToFile:=False hoạt động thế nào vì tôi không có máy in, còn tất cả các dòng lệnh còn lại đều chạy tốt.
Cũng code này mình chạy lúc sáng với file demo thì ok. Không hiểu sao khi thêm dữ liệu vào nó không chạy được
 
không biết dòng lệnh in Sheets("in").PrintOut Copies:=1, Preview:=False, PrintToFile:=False hoạt động thế nào
Truyền 1 lệnh in tới máy in để in mực lên tờ giấy, số bản in =1, xem trước khi in = không, in thành tập tin = không.

tất cả các dòng lệnh còn lại đều chạy tốt.

in thường và In viết hoa khác nhau.
 
Code của Maika8008 có bỏ qua trường hợp inputbox chỉ nhập 1 số, không có dấu ",". Dựa vào code của Maika8008 và yêu cầu lưu file, bạn tham khảo code sau:

Sub PrintMultiPage()
Dim sInput$, inputArr() As String, sNote$, Filename$
Dim aPrint() As Long, i&, j&, k&, lastRow&, startNum&, endNum&
Dim FSO As Object
lastRow = Sheets("Data").Cells(Rows.Count, "A").End(xlUp).Row
Set FSO = CreateObject("scripting.FileSystemObject")
If FSO.FolderExists("D:\TAM") = True Then
Else
FSO.CreateFolder ("D:\TAM")
End If
Set FSO = Nothing
sNote = "Nhap tung trang in, VD: 5" & vbNewLine & "Hoac theo dang: 1,3,4,..." & vbNewLine & _
"Hoac dang: 1-4" & vbNewLine & "Hoac ket hop: 1,3,5-8,10"
sInput = InputBox(sNote, "Kieu trang in")
On Error GoTo Thoat
inputArr = Split(sInput, ",")
For i = LBound(inputArr) To UBound(inputArr)
If InStr(inputArr(i), "-") > 0 Then
startNum = CLng(Left(inputArr(i), InStr(inputArr(i), "-") - 1))
endNum = CLng(Right(inputArr(i), Len(inputArr(i)) - InStr(inputArr(i), "-")))
For j = startNum To endNum
k = k + 1
ReDim Preserve aPrint(1 To k)
aPrint(k) = j
Next j
Else
k = k + 1
ReDim Preserve aPrint(1 To k)
aPrint(k) = CLng(inputArr(i))
End If
Next i
For i = LBound(aPrint) To UBound(aPrint)
Filename = Application.WorksheetFunction.VLookup(aPrint(i), Sheets("Data").Range("A1:M" & lastRow), 13, False)
Sheets("in").Range("H1").Value = aPrint(i)
Sheets("in").ExportAsFixedFormat Type:=xlTypePDF, Filename:="D:\TAM\" & Filename & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Sheets("in").PrintOut Copies:=1, Preview:=False, PrintToFile:=False
Next i
Thoat:
End Sub
 

File đính kèm

Code của Maika8008 có bỏ qua trường hợp inputbox chỉ nhập 1 số, không có dấu ",".
Hà hà, khi làm xong quên mất thử trường hợp đó, chốt hạ:
Rich (BB code):
Sub PrintMultiPage()
Dim aTemp As Variant, aPrint() As Variant, i&, j&, k&, pMax&, sInput$, sNote$
pMax = Sheets("Data").Cells(Rows.Count, "A").End(xlUp).Value
sNote = "Nhap tung trang in, VD: 5" & vbNewLine & "Hoac theo dang: 1,3,4,..." & vbNewLine & _
       "Hoac dang: 1-4" & vbNewLine & "Hoac ket hop: 1,3,5-8,10"
sInput = InputBox(sNote, "Kieu trang in")
On Error GoTo Thoat
If InStr(1, sInput, ",") Then
    aTemp = Split(sInput, ",")
    If InStr(1, sInput, "-") Then
        For i = 0 To UBound(aTemp)
            If InStr(1, aTemp(i), "-") Then
                For j = Left(aTemp(i), InStr(1, aTemp(i), "-") - 1) To Mid(aTemp(i), InStr(1, aTemp(i), "-") + 1)
                    k = k + 1: ReDim Preserve aPrint(1 To k)
                    aPrint(k) = j
                Next
            Else
                k = k + 1: ReDim Preserve aPrint(1 To k)
                aPrint(k) = aTemp(i)
            End If
        Next
    Else
        ReDim aPrint(1 To UBound(aTemp) + 1)
        For i = 0 To UBound(aTemp)
            aPrint(i + 1) = aTemp(i)
        Next
    End If
Else
    ReDim aPrint(1 To 1)
    aPrint(1) = sInput
End If
For i = LBound(aPrint) To UBound(aPrint)
    Sheets("in").Range("H1").Value = aPrint(i)
    Sheets("in").PrintOut Copies:=1, Preview:=False, PrintToFile:=False
Next i
Thoat:
End Sub
 
Truyền 1 lệnh in tới máy in để in mực lên tờ giấy, số bản in =1, xem trước khi in = không, in thành tập tin = không.



in thường và In viết hoa khác nhau.
Cảm ơn "Befaint" góp ý!
Thật ra ban đầu mình cũng không để ý lắm in và In, vì lúc ban đầu mừng quá, chạy thử với in thường, dù file In hoa, thì vẫn ok.
Khi bị lỗi mình, đọc kỹ xem bị chỗ nào, thì thấy "in", mình thử sửa "In" nhưng vẫn không được.
Có khi nào có 1 dòng trống trong Data, nó ko chạy được?
Bài đã được tự động gộp:

Máy người khác thế nào không biết chứ máy tôi không phân biệt Sheets("in") và Sheets("In")
Chính xác, do Sheet "Data", trong quá trình copy dữ liệu nhiều dòng, có 1 dòng trống chen ngang, nên nó ko chạy. Mình xóa dòng đó thì ngon lành rồi!
Toát mồ hôi với nó!
Cảm ơn bạn!
Bài đã được tự động gộp:

Code của Maika8008 có bỏ qua trường hợp inputbox chỉ nhập 1 số, không có dấu ",". Dựa vào code của Maika8008 và yêu cầu lưu file, bạn tham khảo code sau:

Sub PrintMultiPage()
Dim sInput$, inputArr() As String, sNote$, Filename$
Dim aPrint() As Long, i&, j&, k&, lastRow&, startNum&, endNum&
Dim FSO As Object
lastRow = Sheets("Data").Cells(Rows.Count, "A").End(xlUp).Row
Set FSO = CreateObject("scripting.FileSystemObject")
If FSO.FolderExists("D:\TAM") = True Then
Else
FSO.CreateFolder ("D:\TAM")
End If
Set FSO = Nothing
sNote = "Nhap tung trang in, VD: 5" & vbNewLine & "Hoac theo dang: 1,3,4,..." & vbNewLine & _
"Hoac dang: 1-4" & vbNewLine & "Hoac ket hop: 1,3,5-8,10"
sInput = InputBox(sNote, "Kieu trang in")
On Error GoTo Thoat
inputArr = Split(sInput, ",")
For i = LBound(inputArr) To UBound(inputArr)
If InStr(inputArr(i), "-") > 0 Then
startNum = CLng(Left(inputArr(i), InStr(inputArr(i), "-") - 1))
endNum = CLng(Right(inputArr(i), Len(inputArr(i)) - InStr(inputArr(i), "-")))
For j = startNum To endNum
k = k + 1
ReDim Preserve aPrint(1 To k)
aPrint(k) = j
Next j
Else
k = k + 1
ReDim Preserve aPrint(1 To k)
aPrint(k) = CLng(inputArr(i))
End If
Next i
For i = LBound(aPrint) To UBound(aPrint)
Filename = Application.WorksheetFunction.VLookup(aPrint(i), Sheets("Data").Range("A1:M" & lastRow), 13, False)
Sheets("in").Range("H1").Value = aPrint(i)
Sheets("in").ExportAsFixedFormat Type:=xlTypePDF, Filename:="D:\TAM\" & Filename & ".pdf", Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
Sheets("in").PrintOut Copies:=1, Preview:=False, PrintToFile:=False
Next i
Thoat:
End Sub
Cảm ơn bạn đã nhiệt tình giúp mình, dù mình yêu cầu đủ thứ!
Đa tạ!
Bài đã được tự động gộp:

Hà hà, khi làm xong quên mất thử trường hợp đó, chốt hạ:
Rich (BB code):
Sub PrintMultiPage()
Dim aTemp As Variant, aPrint() As Variant, i&, j&, k&, pMax&, sInput$, sNote$
pMax = Sheets("Data").Cells(Rows.Count, "A").End(xlUp).Value
sNote = "Nhap tung trang in, VD: 5" & vbNewLine & "Hoac theo dang: 1,3,4,..." & vbNewLine & _
       "Hoac dang: 1-4" & vbNewLine & "Hoac ket hop: 1,3,5-8,10"
sInput = InputBox(sNote, "Kieu trang in")
On Error GoTo Thoat
If InStr(1, sInput, ",") Then
    aTemp = Split(sInput, ",")
    If InStr(1, sInput, "-") Then
        For i = 0 To UBound(aTemp)
            If InStr(1, aTemp(i), "-") Then
                For j = Left(aTemp(i), InStr(1, aTemp(i), "-") - 1) To Mid(aTemp(i), InStr(1, aTemp(i), "-") + 1)
                    k = k + 1: ReDim Preserve aPrint(1 To k)
                    aPrint(k) = j
                Next
            Else
                k = k + 1: ReDim Preserve aPrint(1 To k)
                aPrint(k) = aTemp(i)
            End If
        Next
    Else
        ReDim aPrint(1 To UBound(aTemp) + 1)
        For i = 0 To UBound(aTemp)
            aPrint(i + 1) = aTemp(i)
        Next
    End If
Else
    ReDim aPrint(1 To 1)
    aPrint(1) = sInput
End If
For i = LBound(aPrint) To UBound(aPrint)
    Sheets("in").Range("H1").Value = aPrint(i)
    Sheets("in").PrintOut Copies:=1, Preview:=False, PrintToFile:=False
Next i
Thoat:
End Sub
Cảm ơn bạn đã bổ sung cho hoàn chỉnh!
 
Lần chỉnh sửa cuối:
Chào anh chị ạ, Em muốn in hàng loạt các file này, anh chị hỗ trợ giúp em ạ. Em cảm ơn ạ
 

File đính kèm

Chào anh chị ạ, Em muốn in hàng loạt các file này, anh chị hỗ trợ giúp em ạ. Em cảm ơn ạ
Để thuận tiện cho việc quản lý nên nhập thông tin và in ấn mình thao tác trên sheet DATA.
Thêm cột STT để làm căn cứ để in dòng nào khi nhập số vào ô C3 và D3.
Thêm cột Bảo hiểm để làm căn cứ sẽ in sheet HDLDCoBaoHiem hay sheet HDLDKhongBaoHiem.
Thêm dòng 5 để Vlookup lấy dữ liệu ở bảng dưới và đi phân phối thông tin cho các sheet khác.
Ô F5 làm căn cứ để đặt tên file khi xuất ra file PDF.
Bảng nhập dữ liệu được chuyển thành Table tên DATA, các ô C3, D3, A5, B5, F5 được đặt name range để khi thêm hàng hay thêm cột không ảnh hưởng đến code.

1684943758520.png
 

File đính kèm

Để thuận tiện cho việc quản lý nên nhập thông tin và in ấn mình thao tác trên sheet DATA.
Thêm cột STT để làm căn cứ để in dòng nào khi nhập số vào ô C3 và D3.
Thêm cột Bảo hiểm để làm căn cứ sẽ in sheet HDLDCoBaoHiem hay sheet HDLDKhongBaoHiem.
Thêm dòng 5 để Vlookup lấy dữ liệu ở bảng dưới và đi phân phối thông tin cho các sheet khác.
Ô F5 làm căn cứ để đặt tên file khi xuất ra file PDF.
Bảng nhập dữ liệu được chuyển thành Table tên DATA, các ô C3, D3, A5, B5, F5 được đặt name range để khi thêm hàng hay thêm cột không ảnh hưởng đến code.

View attachment 290592
Dạ em cảm ơn nhiều ạ
 

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

Back
Top Bottom