[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
Upvote 0
dạ file người khác làm ạ
Bài đã được tự động gộp:

có file này in từng sheet hay mà em gà VBA nên ko mò đc! gởi các anh. pass code: 123
 

File đính kèm

  • Nghiệm thu.xls
    591 KB · Đọc: 5
Lần chỉnh sửa cuối:
Upvote 0
Vậy bạn còn chưa nắm được cách thức hoạt động và liên hệ của các biểu mẫu đó với nhau á.

Bạn bình tĩnh tìm hiểu thêm đi, bạn làm như thế kia là hỏng biểu mẫu của người ta rồi.
dạ ko sao đâu ạ, biểu mẫu em coppy ra ạ! Với biểu mẫu này vào làm người ta đưa in từng tờ 1 nên em muốn VBA để in được nhiều và nhanh hơn ạ
 
Upvote 0
Bạn còn chưa hiểu biểu mẫu người ta thiết kế, hoạt động ra sao mà. Làm sai rồi còn đâu.

View attachment 263311
Dữ liệu các sheet lấy và liên kết thì em biết ạ, còn về code thì em gần như ko biết.
Ý anh nói trong code này để các sheet 4,5,6,7 chạy được theo VBA anh đã viết thì dữ liệu các sheet 4,5,6,7 phải lấy từ giá trị Cột N giống như Sheet 3 , phải như vậy không anh?
 
Upvote 0
Bạn dùng code này thử
Mã:
Sub inbienban()
 
On Error GoTo ex

Dim pr As Variant

Dim ichg As Integer, i1 As Integer, i2 As Integer, i3 As Integer

i1 = Sheet3.Range("N1").Value

i2 = Sheet3.Range("N2").Value

i3 = Sheet3.Range("N4").Value
 
pr = Application.Dialogs(xlDialogPrinterSetup).Show

If pr = False Then Exit Sub

   For ichg = i1 To i2
 
    Sheet3.Range("N3").Formula = ichg
 
    Calculate
    Sheet3.PrintOut ActivePrinter:=pr, Copies:=i3
    Sheet5.PrintOut ActivePrinter:=pr, Copies:=i3
    Sheet6.PrintOut ActivePrinter:=pr, Copies:=i3
    Sheet7.PrintOut ActivePrinter:=pr, Copies:=i3
   Next


Exit Sub

ex:

MsgBox "Kiem tra lai so lieu nhap vao"

End Sub
Mình chỉnh thêm là khi nhảy trang in thì nó sẽ xuất số liệu theo đúng STT ở bảng tổng hợp

PS: Đối với sheet 4 bạn đang ẩn sheet. Và sheet này chưa liên kết với số liệu ở bảng tổng hợp và tọa độ
 

File đính kèm

  • Số Hóa Line CỌC C 07(marco).xlsm
    545.4 KB · Đọc: 5
Upvote 0
Dữ liệu các sheet lấy và liên kết thì em biết ạ, còn về code thì em gần như ko biết.
Ý anh nói trong code này để các sheet 4,5,6,7 chạy được theo VBA anh đã viết thì dữ liệu các sheet 4,5,6,7 phải lấy từ giá trị Cột N giống như Sheet 3 , phải như vậy không anh?

Không phải code. Code ngon lành lắm rồi.

Hai dòng ghi chú này bạn chưa làm được. Lý do là bạn không hiểu cái biểu mẫu của người như thế nào cả.
1627615354037.png

Ở Sheet3 là N1. Còn ở sheet khác là ở ô khác.
Ví dụ như hình là ô Y1. Vậy thao tác như thế này: Gõ dấu = 1 phát, dùng chuột chỏ tới ô N1 của Sheet3 kia, rồi enter một phát. Vậy là xong.
Có mỗi thế thôi.
Đằng này bạn lại viết vào N1 (tô vàng) là sai bét tè lè nhè rồi. Vì đó là vùng trong biểu mẫu, in ra tờ giấy mà dính cái đó thì làm ăn gì nữa.

1627615375373.png
 
Upvote 0
Bạn dùng code này thử
Mã:
Sub inbienban()
 
On Error GoTo ex

Dim pr As Variant

Dim ichg As Integer, i1 As Integer, i2 As Integer, i3 As Integer

i1 = Sheet3.Range("N1").Value

i2 = Sheet3.Range("N2").Value

i3 = Sheet3.Range("N4").Value
 
pr = Application.Dialogs(xlDialogPrinterSetup).Show

If pr = False Then Exit Sub

   For ichg = i1 To i2
 
    Sheet3.Range("N3").Formula = ichg
 
    Calculate
    Sheet3.PrintOut ActivePrinter:=pr, Copies:=i3
    Sheet5.PrintOut ActivePrinter:=pr, Copies:=i3
    Sheet6.PrintOut ActivePrinter:=pr, Copies:=i3
    Sheet7.PrintOut ActivePrinter:=pr, Copies:=i3
   Next


Exit Sub

ex:

MsgBox "Kiem tra lai so lieu nhap vao"

End Sub
Mình chỉnh thêm là khi nhảy trang in thì nó sẽ xuất số liệu theo đúng STT ở bảng tổng hợp

PS: Đối với sheet 4 bạn đang ẩn sheet. Và sheet này chưa liên kết với số liệu ở bảng tổng hợp và tọa độ
cảm ơn anh với Code này, nó in từ 2 bộ trở lên sẽ in 2 tờ đầu của cung 1 cọc, rồi tiếp 2 tờ sau của cùng 1 cọc
Tuy nhiên nếu chỉ in 1 bộ thì nó chạy chuẩn hết cọc 1 rồi đến cọc 2!
Rất cảm ơn anh!
Bài đã được tự động gộp:

Không phải code. Code ngon lành lắm rồi.

Hai dòng ghi chú này bạn chưa làm được. Lý do là bạn không hiểu cái biểu mẫu của người như thế nào cả.
View attachment 263313

Ở Sheet3 là N1. Còn ở sheet khác là ở ô khác.
Ví dụ như hình là ô Y1. Vậy thao tác như thế này: Gõ dấu = 1 phát, dùng chuột chỏ tới ô N1 của Sheet3 kia, rồi enter một phát. Vậy là xong.
Có mỗi thế thôi.
Đằng này bạn lại viết vào N1 (tô vàng) là sai bét tè lè nhè rồi. Vì đó là vùng trong biểu mẫu, in ra tờ giấy mà dính cái đó thì làm ăn gì nữa.

View attachment 263314
Tô vàng là em cho vào thử đúng chỗ của Sheet 3 thì VBA nó chạy được các sheet ko ạ.
Ví dụ giờ ở sheet 4, lập ô Y1, Y2, Y3, Y4 lấy dữ liệu của ô N1, N2, N3, N4 của sheet 3, dữ liệu bảng biểu sheet 4 phải lấy từ ô Y1, Y2, Y3, Y4 thì mới chạy được hả anh?
Cảm ơn anh!
 
Lần chỉnh sửa cuối:
Upvote 0
cảm ơn anh với Code này, nó in từ 2 bộ trở lên sẽ in 2 tờ đầu của cung 1 cọc, rồi tiếp 2 tờ sau của cùng 1 cọc
Tuy nhiên nếu chỉ in 1 bộ thì nó chạy chuẩn hết cọc 1 rồi đến cọc 2!
Rất cảm ơn anh!
Mã:
Sub inbienban()
On Error GoTo ex
Dim pr As Variant
Dim ichg As Integer, i1 As Integer, i2 As Integer, i3 As Integer, banin As Integer
i1 = Sheet3.Range("N1").Value
i2 = Sheet3.Range("N2").Value
i3 = Sheet3.Range("N4").Value
pr = Application.Dialogs(xlDialogPrinterSetup).Show
If pr = False Then Exit Sub
 For banin = 1 To i3
   For ichg = i1 To i2
    Sheet3.Range("N3").Formula = ichg
    Calculate
    Sheet3.PrintOut ActivePrinter:=pr
    Sheet5.PrintOut ActivePrinter:=pr
    Sheet6.PrintOut ActivePrinter:=pr
    Sheet7.PrintOut ActivePrinter:=pr
   Next
Next
Exit Sub
ex:
MsgBox "Kiem tra lai so lieu nhap vao"
End Sub
Tô vàng là em cho vào thử đúng chỗ của Sheet 3 thì VBA nó chạy được các sheet ko ạ.
Ví dụ giờ ở sheet 4, lập ô Y1, Y2, Y3, Y4 lấy dữ liệu của ô N1, N2, N3, N4 của sheet 3, dữ liệu bảng biểu sheet 4 phải lấy từ ô Y1, Y2, Y3, Y4 thì mới chạy được hả anh?
Cảm ơn anh!
Do bạn không lập file này nên bạn không hiểu liên kết giữa các bảng tính. File mình sửa lại thì nó sẽ liên kết về 1 bảng tính là Sheet3 (bìa)
 
Upvote 0
Private Sub c_Click()Dim t As IntegerFor t = a.Text To b.TextRange("H1").Value = tsheetArray = Array("PYC", "NT", "KT", "KL")'Select specific sheets from workbook, the save all as PDFSheets(sheetArray).SelectSheets(sheetArray).SelectActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _ Filename:=Sheets("PYC").Range("H1"), OpenAfterPublish:=TrueNextEnd Sub
mọi người sửa giúp mình code này với
 
Upvote 0
Web KT

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

Back
Top Bottom