VBA lưu file, in, và mở lại file gốc ban đầu

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Emyeuexcel

Thành viên thường trực
Tham gia
9/6/16
Bài viết
269
Được thích
26
Chào các anh chị,

VBA mình mới mò mẫm đang học.
Mình có file đính kèm, có code VBA (mình cóp nhặt lồng ghép code trên mạng). Chân thành cảm ơn các tác giả những code này!
Giờ mình muốn in hàng loạt theo số thứ tự bên sheet Lot, nhưng code này không thực hiện được, chỉ in đúng 1 số nào nhập đầu tiên (vd: 2-5, thì chỉ in số 2)
Nếu mình chịu khó in từng số thì vẫn được. Hiện code này sau khi lưu ra file mới theo ý mình và in xong cho 1 số thứ tự thì ok.
Tuy nhiên nó không mở lại được file gốc ban đầu để in tiếp.
Mong các anh chị vui lòng giúp mình sửa code sao cho nó mở lại file gốc. Và nếu tuyệt vời hơn thì sửa code lưu file, in hàng loạt theo những số thự tự đã nhập vào.
Xin chân thành cảm ơn các anh chị!
 

File đính kèm

  • EPR Tempalte.xlsm
    106.6 KB · Đọc: 11
For i = LBound(aPrint) To UBound(aPrint)
Filename = Application.WorksheetFunction.VLookup(aPrint(i), Sheets("Lot").Range("A1:C" & lastRow), 3, False)
ActiveWorkbook.SaveAs Filename:="D:\TAM\" & Filename & ".xlsm"
Sheets("in").Range("H1").Value = aPrint(i)
With Range("A7:K105")
.AutoFilter Field:=10, Criteria1:="0"
.SpecialCells(xlCellTypeVisible, 12).EntireRow.Delete
End With
ActiveSheet.AutoFilterMode = False
Sheets("in").Range("H1").Value = aPrint(i)
Sheets("in").PrintOut Copies:=1, Preview:=False, PrintToFile:=False
Set wb = Workbooks.Open("D:\TAM\EPR Tempalte.xlsm")
Workbooks(Filename).Close Savechanges:=True
Mình vừa đổi như vậy thì save as theo tên file, in xong, open được file gốc.
Nhưng chưa in hàng loạt file.
Mong các anh chị diễn đàn chỉ giúp mình ah!
 
Upvote 0
Chào các anh chị,

VBA mình mới mò mẫm đang học.
Mình có file đính kèm, có code VBA (mình cóp nhặt lồng ghép code trên mạng). Chân thành cảm ơn các tác giả những code này!
Giờ mình muốn in hàng loạt theo số thứ tự bên sheet Lot, nhưng code này không thực hiện được, chỉ in đúng 1 số nào nhập đầu tiên (vd: 2-5, thì chỉ in số 2)
Nếu mình chịu khó in từng số thì vẫn được. Hiện code này sau khi lưu ra file mới theo ý mình và in xong cho 1 số thứ tự thì ok.
Tuy nhiên nó không mở lại được file gốc ban đầu để in tiếp.
Mong các anh chị vui lòng giúp mình sửa code sao cho nó mở lại file gốc. Và nếu tuyệt vời hơn thì sửa code lưu file, in hàng loạt theo những số thự tự đã nhập vào.
Xin chân thành cảm ơn các anh chị!
Có lẽ bạn nêu kết quả mong muốn và điều kiện thực hiện các bước (ví dụ điều kiện lọc, in, xóa, tạo file mới có những sheet nào, định dạng ra sao ...) để thành viên nào có thời gian viết code mới giúp bạn sẽ nhanh hơn, chứ đi mò mẫm để hiểu và sửa code này chắc mất khá nhiều thời gian và khả năng dài dòng hơn code mới.
 
Upvote 0
Có lẽ bạn nêu kết quả mong muốn và điều kiện thực hiện các bước (ví dụ điều kiện lọc, in, xóa, tạo file mới có những sheet nào, định dạng ra sao ...) để thành viên nào có thời gian viết code mới giúp bạn sẽ nhanh hơn, chứ đi mò mẫm để hiểu và sửa code này chắc mất khá nhiều thời gian và khả năng dài dòng hơn code mới.
Cảm ơn bạn góp ý!
Mình muốn in hàng loạt theo số thứ tự bên sheet Lot (có thể in 1 số, 2 hay nhiều số liên tục, hay không liên tục)
Trước khi in, save file vào thư mục tùy ý do mình chỉ định theo tên file cột C, sheet Lot, tương ứng từng số thứ tự, và xóa các dòng bằng 0 ở cột J, bên sheet In.
 
Upvote 0
Cảm ơn bạn góp ý!
Mình muốn in hàng loạt theo số thứ tự bên sheet Lot (có thể in 1 số, 2 hay nhiều số liên tục, hay không liên tục)
Trước khi in, save file vào thư mục tùy ý do mình chỉ định theo tên file cột C, sheet Lot, tương ứng từng số thứ tự, và xóa các dòng bằng 0 ở cột J, bên sheet In.
Vậy file kết quả đâu cần đến 2 sheets như file gốc, chỉ cần 1 sheet in không có các dòng có giá trị bằng không ở cột J là được rồi chứ nhỉ.
 
Upvote 0
Vậy file kết quả đâu cần đến 2 sheets như file gốc, chỉ cần 1 sheet in không có các dòng có giá trị bằng không ở cột J là được rồi chứ nhỉ.
Đúng rồi bạn. File save as ra đặt tên file theo cột C sheet Lot, xóa dòng = 0 cột J và in, xong đóng file này lại luôn thì không cần sheet Lot nữa cũng được, mà để cũng không sao.
Còn file gốc thì bắt buộc phải có.
Mong bạn và các cao thủ VBA giúp mình với!
Xin cảm ơn nhiều!
 
Upvote 0
Đúng rồi bạn. File save as ra đặt tên file theo cột C sheet Lot, xóa dòng = 0 cột J và in, xong đóng file này lại luôn thì không cần sheet Lot nữa cũng được, mà để cũng không sao.
Còn file gốc thì bắt buộc phải có.
Mong bạn và các cao thủ VBA giúp mình với!
Xin cảm ơn nhiều!
Không dùng từ bôi đậm nhé.
 
Upvote 0
Mong các anh chị vui lòng giúp mình sửa code sao cho nó mở lại file gốc. Và nếu tuyệt vời hơn thì sửa code lưu file, in hàng loạt theo những số thự tự đã nhập vào.
Chưa thử hết các trường hợp, bạn chạy thử xem thế nào.
 

File đính kèm

  • EPR Tempalte (1).xlsm
    73.6 KB · Đọc: 2
Lần chỉnh sửa cuối:
Upvote 0
Mong các anh chị vui lòng giúp mình sửa code sao cho nó mở lại file gốc. Và nếu tuyệt vời hơn thì sửa code lưu file, in hàng loạt theo những số thự tự đã nhập vào.
Tham khảo thêm một cách lựa chọn các dòng cần in và xuất file trong InputBox.
 

File đính kèm

  • EPR Tempalte_2.xlsm
    72.7 KB · Đọc: 5
Upvote 0
Chưa thử hết các trường hợp, bạn chạy thử xem thế nào.
Cảm ơn bạn nhiệt tình giúp mình.
Code của bạn lưu được file theo đúng tên, nhưng nội dung các file giống y nhau vì nó nhân ra từ file được lưu ban đầu nên số lô hàng thì đúng, nhưng sản phẩm bên dưới sai.
Bạn giúp mình làm sao nó phải quay lại save as ra từ file gốc thì nó sẽ đúng cả sản phẩm và tên lô hàng.
Mình rất biết ơn bạn!
Bài đã được tự động gộp:

Tham khảo thêm một cách lựa chọn các dòng cần in và xuất file trong InputBox.
Bạn ơi, code này thì nhập vào nó không chạy.
 
Upvote 0
số lô hàng thì đúng, nhưng sản phẩm bên dưới sai.
Bạn giúp mình làm sao nó phải quay lại save as ra từ file gốc thì nó sẽ đúng cả sản phẩm và tên lô hàng.
Không có vài file kết quả mong muốn nên khó hình dung.
Bạn ơi, code này thì nhập vào nó không chạy.
Chịu khó đọc hướng dẫn trên InputBox đã.
 
Upvote 0
Các anh chị GPE ơi,

Mình đang nghĩ sang 1 cách khác là copy ra sheet mới giữ định dạng theo sheet gốc (để in), đặt tên theo số thứ tự của trong sheet Lot, xóa dòng bằng 0 các sheet mới tạo, in sheet mới tạo, rồi lưu ra 1 file theo tên cột C của sheet Lot. Xóa sheet mới tạo đi.
Vậy nó sẽ chạy code trên file gốc đang mở. Nhưng mình không biết làm thế nào cho các bước trên.
Mong các anh chị giúp mình code với ạ.
 

File đính kèm

  • EPR Template_copy sheet.xlsm
    150.7 KB · Đọc: 2
Upvote 0
Không có vài file kết quả mong muốn nên khó hình dung.

Chịu khó đọc hướng dẫn trên InputBox đã.
Ôi, mình ko hiểu nên làm sai, tuy nhiên khi mình chọn dòng cột A đúng như Input thì nó cho ra kết quả cũng như trường hợp file template 1. Tức nội dung sản phẩm không đúng như số lô hàng.
 
Upvote 0
Ôi, mình ko hiểu nên làm sai, tuy nhiên khi mình chọn dòng cột A đúng như Input thì nó cho ra kết quả cũng như trường hợp file template 1. Tức nội dung sản phẩm không đúng như số lô hàng.
Vì lý do này đó: "Không có vài file kết quả mong muốn nên khó hình dung".
 
Upvote 0
Mỗi lúc một kiểu thế này thì mọi người chạy hết mất thôi.
Mong bạn thông cảm, vì cách ban đầu nó khó lưu hàng loạt mà quay về file gốc để lưu ra nên mình nghĩ cách copy sheet để các anh chị có thể giúp mình được không.
Bài đã được tự động gộp:

Vì lý do này đó: "Không có vài file kết quả mong muốn nên khó hình dung".
Mình up 3 file kết quả, mình thử in dòng thứ tự cột A là 4,5,6 tức Táo, Việt Quất và Nho. Nhưng nó ra Dâu tây, nghĩa là nó chỉ lấy theo sản phẩm của lô số thứ tự 1 là STEG_6024_KR
 

File đính kèm

  • EPR__APDM_2924_US.xlsx
    27.9 KB · Đọc: 0
  • EPR__BBNB_8324_US.xlsx
    27.9 KB · Đọc: 1
  • EPR__GRPX_1924_AU.xlsx
    27.9 KB · Đọc: 0
Lần chỉnh sửa cuối:
Upvote 0
Mong bạn thông cảm, vì cách ban đầu nó khó lưu hàng loạt mà quay về file gốc để lưu ra nên mình nghĩ cách copy sheet để các anh chị có thể giúp mình được không.
Bài đã được tự động gộp:


Mình up 3 file kết quả, mình thử in dòng thứ tự cột A là 4,5,6 tức Táo, Việt Quất và Nho. Nhưng nó ra Dâu tây, nghĩa là nó chỉ lấy theo sản phẩm của lô số thứ tự 1 là STEG_6024_KR
Đó là hậu quả của việc không đưa ví dụ kết quả mong muốn lên ngay từ bài đầu đó bạn.
 
Upvote 0
Mong bạn thông cảm vì mình không kinh nghiệm và giúp mình với nhé!
Trong cột J, sheet "In" file gốc của bạn không có công thức gì và duy nhất chỉ có hai dòng có dữ liệu khác không thì làm sao có thể nhảy sang số liệu khác được, mình đoán một số cột của sheet "in" file gốc của bạn thiếu công thức lấy dữ liệu từ sheet "DATA" nên mới bị như vậy, bạn kiểm tra lại xem thế nào.
 
Lần chỉnh sửa cuối:
Upvote 0
Trong cột J, sheet "In" file gốc của bạn không có công thức gì và duy nhất chỉ có hai dòng có dữ liệu khác không thì làm sao có thể nhảy sang số lệu khác được, mình đoán một sô cột của sheet "in" file gốc của bạn thiếu công thức lấy dữ liệu từ sheet "DATA" nên mới bị như vậy, bạn kiểm tra lại xem thế nào.
Cột J sheet In có công thức lấy dữ liệu từ 1 file data khác:
IFERROR(XLOOKUP($A7&"-"&$D$3,'[2023_TRACKTO FOOD IMPORT__UPDATE.xlsx]FRESH FRUITS'!$BJ:$BJ,'[2023_TRACKTO FOOD IMPORT__UPDATE.xlsx]FRESH FRUITS'!$AE:$AE),0)
1714965116367.png
Nó tham chiếu theo ô D3 và cột A.
mà D3 sheet In thì phụ thuộc vào H1 sheet In, H1 chính là số thứ tự bên sheet Lot.
Khi H1 thay đổi thì D3 thay đổi, mà D3 thay đổi thì các dòng khác 0 cột J bên dưới thay đổi theo (tức sản phẩm khác theo lô hàng tương ứng)
Cái data có chữ TRACKTO hơi lớn, không biết sao gởi cho bạn xem.
 
Upvote 0
Web KT
Back
Top Bottom