[Giúp đỡ] Sửa giúp Code VBA để in nhiều Sheet

Liên hệ QC

haukidien

Thành viên mới
Tham gia
4/8/10
Bài viết
19
Được thích
0
Em có file dữ liệu cọc với code In tự động nhưng chỉ được 1 sheet Bìa (Sheet 3), vậy xin các Anh/chị giúp em chèn thêm code để có thể in 4 sheet : Bìa, Nhật ký cọc, Đổ Bê tông, BBLM (sheet 3,4,5,6,7) trong 1 lần in với ạ.
Code trong file excel như sau: (sheet 3 là Bìa, sheet4 là nhật ký cọc, sheet5 là ...)
Mã:
Sub print_td()
Dim p1 As Long, p2 As Long, n As Long, i As Long, j As Long
p1 = Sheet3.Range("N1").Value
p2 = Sheet3.Range("N2").Value
n = Sheet3.Range("N4").Value 'so bo can in
For j = 1 To n
  For i = p1 To p2
    Sheet3.Range("N3").Value = i
    'Sheet3.PrintOut
    Sheet3.PrintOut
  Next i
Next j
 
End Sub
 

File đính kèm

  • Số Hóa Line CỌC C 07(marco).xlsm
    519.5 KB · Đọc: 11
PHP:
Sub inNhieuSheets()
call inTheoSheet (Sheet3)
call inTheoSheet (Sheet4)
call inTheoSheet (Sheet5)
call inTheoSheet (Sheet6)
call inTheoSheet (Sheet7)
End Sub

'*************'
private Sub inTheoSheet(byval ws as worksheet)
Dim p1 As Long, p2 As Long, n As Long, i As Long, j As Long
p1 = ws.Range("N1").Value
p2 = ws.Range("N2").Value
n = ws.Range("N4").Value 'so bo can in'
For j = 1 To n
  For i = p1 To p2
    ws.Range("N3").Value = i
    'ws.PrintOut'
    ws.PrintOut
  Next i
Next j
End Sub
 
Upvote 0
PHP:
Sub inNhieuSheets()
call inTheoSheet (Sheet3)
call inTheoSheet (Sheet4)
call inTheoSheet (Sheet5)
call inTheoSheet (Sheet6)
call inTheoSheet (Sheet7)
End Sub

'*************'
private Sub inTheoSheet(byval ws as worksheet)
Dim p1 As Long, p2 As Long, n As Long, i As Long, j As Long
p1 = ws.Range("N1").Value
p2 = ws.Range("N2").Value
n = ws.Range("N4").Value 'so bo can in'
For j = 1 To n
  For i = p1 To p2
    ws.Range("N3").Value = i
    'ws.PrintOut'
    ws.PrintOut
  Next i
Next j
End Sub
Cảm ơn anh. Tuy nhiên em chép code này vào file thì chạy bị lỗi : Compile error: Syntax error ạ! xin giúp đỡ thêm với
 
Upvote 0
Bạn kiểm tra lại nội dung bạn chép có giống với cái này không?

View attachment 263253
xin lỗi anh, em chép chắc bị lỗi 1 chỗ nào
Em đã thêm dòng N1, N2, N3, N4 vào các sheet kia thì chạy được rồi
Anh hổ trợ thêm xíu ạ, muốn in cả mấy sheet đó vào 1 file PDF thì thêm code gì ạ?
Và em muốn in từ sheet 3 đến sheet 7, rồi quay lại in tiếp sheet 3 đến 7 cho số tiếp theo, ở đây nó in hết 1 loạt sheet 3 rồi mới in sheet 4 ạ, anh chỉnh giúp em với!
cảm ơn anh rất nhiều!
 
Lần chỉnh sửa cuối:
Upvote 0
qua tới đây rồi à! Code nãy mình hỗ trợ copy paste vô là chạy dc luôn rồi! đi đâu hỏi hoài thế!
Bài đã được tự động gộp:

Sub print_td()
Dim p1 As Long, p2 As Long, n As Long, i As Long, j As Long
p1 = Sheet3.Range("N1").Value
p2 = Sheet3.Range("N2").Value
n = Sheet3.Range("N4").Value 'so bo can in
For j = 1 To n
For i = p1 To p2
Sheet3.Range("N3").Value = i
'Sheet3.PrintOut
Sheet3.PrintOut
Next i
Next j

End Sub


thay the nguyen đoạn trên bằng

Sub print_td()

Dim i As Integer

For i = 3 To 7 ' lap tu 3 den 7 de lay sheet3 den sheet7

Sheet(i).PrintOut From:=Sheet3.Range("N1").Value, To:=Sheet3.Range("N2").Value, Copies:=Sheet3.Range("N4").Value

Next i

End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
qua tới đây rồi à! Code nãy mình hỗ trợ copy paste vô là chạy dc luôn rồi! đi đâu hỏi hoài thế!
Bài đã được tự động gộp:

Sub print_td()
Dim p1 As Long, p2 As Long, n As Long, i As Long, j As Long
p1 = Sheet3.Range("N1").Value
p2 = Sheet3.Range("N2").Value
n = Sheet3.Range("N4").Value 'so bo can in
For j = 1 To n
For i = p1 To p2
Sheet3.Range("N3").Value = i
'Sheet3.PrintOut
Sheet3.PrintOut
Next i
Next j

End Sub


thay the nguyen đoạn trên bằng

Sub print_td()

Dim i As Integer

For i = 3 To 7 ' lap tu 3 den 7 de lay sheet3 den sheet7

Sheet(i).PrintOut From:=Sheet3.Range("N1").Value, To:=Sheet3.Range("N2").Value, Copies:=Sheet3.Range("N4").Value

Next i

End Sub
dạ vâng, cái này em coppy vào nhưng ko chạy được, em nhờ anh hổ trợ thêm nhưng Admin bên kia nói vậy nên em ko hỏi nữa, sợ phiền! cảm ơn anh!
Bài đã được tự động gộp:

Đờ cờ ca ô là cái gì?
Đờ cờ nhá?


Khô
Đờ cờ ca ô là cái gì?
Đờ cờ nhá?


Không hiểu gì. Mô tả bao giờ hiểu mới làm được.
dạ như này ạ:
- ví dụ 1 cọc của em bao gồm 5 tờ là sheet3, sheet 4, sheet 5, sheet 6, sheet 7
em muốn in cọc thứ 1 gồm sheet3, sheet4, sheet5, sheet6 , sheet 7. xong 1 cọc, rồi in tiếp cọc thứ 2 , cọc thứ 3
Hiện tại theo code trên thì sẽ in Sheet3 cọc 1, cọc 2, rồi sheet4 cọc 1, cọc 2,.....
Anh chỉnh code giúp em là in sẽ chạy Sheet 3, sheet 4, sheet5, sheet 6, sheet 7 cho cọc 1 xong, rồi lại chạy cọc thứ 2 , cọc thứ 3 ạ!
Thanks anh!
 
Upvote 0
- ví dụ 1 cọc của em bao gồm 5 tờ là sheet3, sheet 4, sheet 5, sheet 6, sheet 7
em muốn in cọc thứ 1 gồm sheet3, sheet4, sheet5, sheet6 , sheet 7. xong 1 cọc, rồi in tiếp cọc thứ 2 , cọc thứ 3
Hiện tại theo code trên thì sẽ in Sheet3 cọc 1, cọc 2, rồi sheet4 cọc 1, cọc 2,.....
Anh chỉnh code giúp em là in sẽ chạy Sheet 3, sheet 4, sheet5, sheet 6, sheet 7 cho cọc 1 xong, rồi lại chạy cọc thứ 2 , cọc thứ 3 ạ!

PHP:
'Lập công thức trên bảng tính cho các Sheet4-5-6-7'
'=Sheet3!N1 - N2 - N4'
Sub inBienBan()
Dim p1 As Long, p2 As Long, n As Long, i As Long, j As Long
p1 = Sheet3.Range("N1").Value
p2 = Sheet3.Range("N2").Value
n = Sheet3.Range("N4").Value 'so bo can in'
For j = 1 To n
  For i = p1 To p2
    Sheet3.Range("N3").Value = i
    Sheet3.PrintOut
    Sheet4.PrintOut
    Sheet5.PrintOut
    Sheet6.PrintOut
    Sheet7.PrintOut
  Next i
Next j
End Sub
 
Upvote 0
PHP:
'Lập công thức trên bảng tính cho các Sheet4-5-6-7'
'=Sheet3!N1 - N2 - N4'
Sub inBienBan()
Dim p1 As Long, p2 As Long, n As Long, i As Long, j As Long
p1 = Sheet3.Range("N1").Value
p2 = Sheet3.Range("N2").Value
n = Sheet3.Range("N4").Value 'so bo can in'
For j = 1 To n
  For i = p1 To p2
    Sheet3.Range("N3").Value = i
    Sheet3.PrintOut
    Sheet4.PrintOut
    Sheet5.PrintOut
    Sheet6.PrintOut
    Sheet7.PrintOut
  Next i
Next j
End Sub
lập công thức trên bảng tính sheet 4-5-6-7 có nghĩa là ở sheet 4-5-6-7 tại vị trí N1, N2, N4 dữ liệu giống như sheet 3 phải ko ạ?
 
Upvote 0
Có đúng đâu.
Viết sai Sheet(i)
Nếu có viết đúng Sheets(i) cũng không được. Đấy là gọi theo sheet index, cái của người ta gọi theo code name.
bạn nói thiếu chữ s là đúng! Nhưng lý do gì code sai?

?Sheets(3).name
BÌA
?Sheets(4).name
bc T?NG H?P
?Sheets(5).name
Nh?t ký c?c
?Sheets(6).name
Ð? bê tông
?Sheets(7).name
BBLM
 
Upvote 0
Cần tìm hiểu kỹ về sheet name, sheet index, code name. Vẫn lơ mơ thế kia thì chưa áp dụng được.
 
Upvote 0
Web KT

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

Back
Top Bottom