Nhờ hướng dẫn code lưu file tự động vào từng folder

Liên hệ QC

saobekhonglac

Thành viên mới
Tham gia
1/11/08
Bài viết
1,565
Được thích
1,454
Giới tính
Nam
Chào anh/chị.

Em có file excel để in chi tiết phát sinh theo từng khách hàng. Tại ô B8 trên sheet “Trang 1” khi em chọn MA KH (lấy từ list A2 đến A… bên sheet “Khách hàng”) và bấm nút Print thì sẽ in dạng PDF (trong máy có máy in “CutePDF Writer”. Trong ổ D:\ em có 3 folder LE VAN A, LE VAN B, LE VAN C, mỗi nhân viên trong sheet Khách hàng sẽ có 1 folder).
Nhờ anh/chị tạo giúp em code sau cho khi bấm vào nút Print thì sẽ in lần lượt (dạng PDF) những MA KH có trong sheet “Khách hàng” (từ A2 đến A…) và được lưu vào từng folder của từng nhân viên với tên là “MA KH”.PDF.
Ví dụ khi bấm nút Print thì dữ liệu sẽ được lưu như sau:
D:\LE VAN A\B00616.PDF
D:\LE VAN B\B01340.PDF
D:\LE VAN C\A00223.PDF

Cám ơn anh/chị.
 
Cám ơn anh.

Em làm theo code anh nhưng chỉ lưu được 1 MA KH hiện tại ở B8, chứ không có lưu lần lượt tất cả MA KH bên sheet Khách hàng. Anh xem lại giúp em.


Theo tôi được biết thì Cute PDF là máy in ảo (cũng như máy in thật thôi.) Nếu nhấn in phát thì nó ra luôn & nó lưu file theo cái tên của file gốc. chứ chẳng thể lưu được từng tên như mình muốn.

Bạn có thể không cần thông qua Cute PDF mà save as trực tiếp là file PDF luôn cũng được mà

Mã:
Option Explicit
Sub SavePDF()
    Sheet1.ExportAsFixedFormat Type:=xlTypePDF, Filename:="D:\" & Application.VLookup([B8].Value, _
    Sheet2.[A2:B1000], 2, 0) & "\" & [B8].Value & ".pdf"
End Sub
 
Dữ liệu của bạn thay đổi khi chọn MSKH.
Vậy ứng với từng Mã này thì chỉ xuất PDF 1 lần thôi chứ nhỉ?
Nếu đúng như thế thì theo tôi tại Sheet Khách hàng tương ứng từng khách sẽ có đường dẫn vào tường Folder.
Việc Export File sẽ tham chiếu theo từng mã khách hàng và đường dẫn đó.
Liệu có đúng ý bạn
 
Đúng rồi anh. Cám ơn anh. Nhưng nếu trường hợp MA KH có hơn 29 dòng thì sẽ có 2 trang, mình có cách nào in được hết 2 trang không anh, file lưu là MA KH_1 & MA KH_2.


Lúc đầu tôi cũng nghỉ là tác giả chọn Mã khách hàng bằng tay. Rồi muốn Export thì nhấn nút.... Nhưng qua #3 thì tôi hiểu rằng tác giả muốn in lần lượt từng khách hàng (danh sách khách hàng bên sheet2). Nên duyệt từng mã đưa vào Mảng luôn... Chắc là đúng ý rồi... Chờ tác giả phản hồi....
 
Nếu mình copy sheet Trang 1 thành 1 sheet là Trang 2 và sửa công thức lấy dự liệu từ dòng 29 thì có cách nào in trang 2 của những KH có trên 29 dòng không anh.
Save As kiểu vậy thì có bao nhiêu nó nhét hết vào 1 trang. Còn vụ mà Save as mà tách ra từng trang thì tôi chưa gặp bao giờ... Nên không có biết....--=0--=0--=0
 
Nếu mà 1 phát muốn in tất các Mã luôn thử tham khảo code này, không cần đến 2 vòng lập
[gpecode=vb]Sub ExportPDF()
Application.DisplayAlerts = False
Dim i&, Arr(), FileName As String
Arr = Range(Sheet2.[A2], Sheet2.[C100].End(3))
For i = 1 To UBound(Arr)
Sheet1.[B8] = Arr(i, 1)
FileName = Arr(i, 3) & Arr(i, 1)
Sheet1.ExportAsFixedFormat 0, FileName
Next
Application.DisplayAlerts = True
End Sub[/gpecode]

Để hoàn thiện hơn thì nghiên cứ thêm File System object để xem có tồn tại file ko? Vì tôi đang dùng cắp: Application.DisplayAlerts
Như vậy file export sẽ in đè lên dữ liệu cũ.
Bạn thay đổi đường dẫn muốn lưu tại Sheet Khách hàng
Lưu ý: Phải đảo bảo có Folder đó trong máy nhé.
 

File đính kèm

Lần chỉnh sửa cuối:
Anh ơi nếu giờ em không muốn lưu dạng PDF nữa mà em muốn in luôn ra máy in thì được không anh. Anh tạo giúp em code chọn máy in luôn nha vì trên máy tính của em có nhiều máy in. máy em cần in không phải máy mặc định.

Cám ơn.

GPE có nút cảm ơn đó bạn
Mã:
Option Explicit
Sub SavePDF()
Dim Arr, I As Long, K As Long
Application.ScreenUpdating = False
I = Sheet2.[A1].End(4).Row
ReDim Arr(1 To I - 1)
For I = 1 To I - 1
    Arr(I) = Sheet2.Range("A" & I + 1).Value
Next I
For K = 1 To UBound(Arr)
    Sheet1.[B8].Value = Arr(K)
    Sheet1.ExportAsFixedFormat Type:=xlTypePDF, Filename:="D:\" & Application.VLookup([B8].Value, _
    Sheet2.[A2:B1000], 2, 0) & "\" & [B8].Value & ".pdf"
Next K
Application.ScreenUpdating = True
End Sub
 
Chào anh.

Anh xem giúp em nếu trường hợp MSKH là dạng số (100001) hoặc text ('100001) thì khi xuất sẽ bị báo lỗi ở dòng tô màu bên dưới. Anh xem giúp em.

Cám ơn.

Option Explicit
Sub SavePDF()
Dim Arr, I As Long, K As Long
Application.ScreenUpdating = False
I = Sheet2.[A1].End(4).Row
ReDim Arr(1 To I - 1)
For I = 1 To I - 1
Arr(I) = Sheet2.Range("A" & I + 1).Value
Next I
For K = 1 To UBound(Arr)
Sheet1.[B8].Value = Arr(K)
Sheet1.ExportAsFixedFormat Type:=xlTypePDF, Filename:="D:" & Application.VLookup([B8].Value, _
Sheet2.[A2:B1000], 2, 0) & "" & [B8].Value & ".pdf"

Next K
Application.ScreenUpdating = True
End Sub
[/code][/QUOTE]
 
Lần chỉnh sửa cuối:
Bạn thử bỏ .Value trong code thử xem sau.
Chào anh.

Anh xem giúp em nếu trường hợp MSKH là dạng số (100001) hoặc text ('100001) thì khi xuất sẽ bị báo lỗi ở dòng tô màu bên dưới. Anh xem giúp em.

Cám ơn.

Option Explicit
Sub SavePDF()
Dim Arr, I As Long, K As Long
Application.ScreenUpdating = False
I = Sheet2.[A1].End(4).Row
ReDim Arr(1 To I - 1)
For I = 1 To I - 1
Arr(I) = Sheet2.Range("A" & I + 1).Value
Next I
For K = 1 To UBound(Arr)
Sheet1.[B8].Value = Arr(K)
Sheet1.ExportAsFixedFormat Type:=xlTypePDF, Filename:="D:" & Application.VLookup([B8].Value, _
Sheet2.[A2:B1000], 2, 0) & "" & [B8].Value & ".pdf"

Next K
Application.ScreenUpdating = True
End Sub
[/code]
[/QUOTE]
 
Chào anh.

Anh xem lại code giúp em, Khi bấm nút Print thì vẫn xuất ra pdf nhưng không có dữ liệu gì hết.

Cám ơn anh.

Nếu mà 1 phát muốn in tất các Mã luôn thử tham khảo code này, không cần đến 2 vòng lập
[gpecode=vb]Sub ExportPDF()
Application.DisplayAlerts = False
Dim i&, Arr(), FileName As String
Arr = Range(Sheet2.[A2], Sheet2.[C100].End(3))
For i = 1 To UBound(Arr)
Sheet1.[B8] = Arr(i, 1)
FileName = Arr(i, 3) & Arr(i, 1)
Sheet1.ExportAsFixedFormat 0, FileName
Next
Application.DisplayAlerts = True
End Sub[/gpecode]

Để hoàn thiện hơn thì nghiên cứ thêm File System object để xem có tồn tại file ko? Vì tôi đang dùng cắp: Application.DisplayAlerts
Như vậy file export sẽ in đè lên dữ liệu cũ.
Bạn thay đổi đường dẫn muốn lưu tại Sheet Khách hàng
Lưu ý: Phải đảo bảo có Folder đó trong máy nhé.
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom