File xuất lưu không đúng vị trí khi dùng code xuất file PDF hàng loạt từ Excel

Liên hệ QC

yulkyun

Thành viên mới
Tham gia
30/5/18
Bài viết
3
Được thích
0
Xin chào mọi người. Em đang có vấn đề với code xuất file PDF hàng loạt. Em có code để sau khi xuất File PDF thì các File lưu chung thư mục với File Excel ban đầu (thư mục gốc là Desktop\"Folder 1"\"Folder 2"\). Nhưng các file sau khi xuất thì lại nhảy vô thư mục This PC\Documents\. Không biết em bị sai ở đâu ạ. Đây là code của em, nhờ các anh/chị xem giúp ạ
Mã:
Sub PRINT_usd()
Dim n As Long
Dim i As Integer
Dim p1 As Integer
Dim p2 As Integer
p1 = Sheet2.Range("O1").Value
p2 = Sheet2.Range("O2").Value
For i = p1 To p2
    With Sheet2
    .Range("M2") = Sheet7.Range("A" & i + 3)
    Filename = ActiveWorkbook.Path & "\" & Sheet2.Range("M2").Value & ".pdf" 'Create full filename & Path with current workbook location, Last Name & First Name
Sheet2.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Range("B6").Value _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
                    End With
           Next i

End Sub
 
...
Sheet2.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Range("B6").Value _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
...
Bạn thử sửa thành: Sheet2.ExportAsFixedFormat Type:=xlTypePDF, Filename
Không hiểu file pdf bạn đặt tên theo tên tại ô M2 sheet2 hay tên theo ô B6 sheet2.
Nếu tên theo ô B6 thì sửa lại: Filename = ActiveWorkbook.Path & "\" & Sheet2.Range("B6").Value & ".pdf"
 
Upvote 0
Dạ vâng, nhưng em cũng có sửa rồi, mà vẫn xuất file ko đúng thư mục gốc của File excel. Không biết bị lỗi ở đâu
 
Upvote 0
Dạ vâng, nhưng em cũng có sửa rồi, mà vẫn xuất file ko đúng thư mục gốc của File excel. Không biết bị lỗi ở đâu
Bạn không nói rõ là code được chạy trong tình huống nào, có chắc là ở thời điểm đó tập tin có code đang hoạt động không. Vậy thử thay ActiveWorkbook bằng ThisWorkbook.

Kể cũng lạ là nhiều khi muốn truy cập tới tập tin có code đang thực thi mà cứ dùng ActiveWorkbook để rồi phụ thuộc vào tình huống khi vì lý do nào đó tập tin có code đang không hoạt động. Nguyên nhân cụ thể trong chủ đề này ra sao thì nguyên tắc bất di bất dịch là dùng ThisWorkbook thôi. Không có chuyện ActiveWorkbook gì cả khi muốn truy cập tới tập tin chứa code đang thực thi.
 
Upvote 0
Bạn không nói rõ là code được chạy trong tình huống nào, có chắc là ở thời điểm đó tập tin có code đang hoạt động không. Vậy thử thay ActiveWorkbook bằng ThisWorkbook.

Kể cũng lạ là nhiều khi muốn truy cập tới tập tin có code đang thực thi mà cứ dùng ActiveWorkbook để rồi phụ thuộc vào tình huống khi vì lý do nào đó tập tin có code đang không hoạt động. Nguyên nhân cụ thể trong chủ đề này ra sao thì nguyên tắc bất di bất dịch là dùng ThisWorkbook thôi. Không có chuyện ActiveWorkbook gì cả khi muốn truy cập tới tập tin chứa code đang thực thi.
dạ vâng, ban đầu là Thisworkbook ạ, và code có chạy, xuất và mở được file pdf, nhưng chỉ là ko đúng thư mục với tập tin Excel gốc. Sau đó em thử ActiveWorkbook thì cũng không khác. Và lúc đó em chỉ mở 1 File duy nhất.
Em dùng code này trong khi là em xuất file thông báo nộp tiền riêng cho từng Doanh nghiệp (em đang làm bên Thuế)
 
Upvote 0
dạ vâng, ban đầu là Thisworkbook ạ, và code có chạy, xuất và mở được file pdf, nhưng chỉ là ko đúng thư mục với tập tin Excel gốc. Sau đó em thử ActiveWorkbook thì cũng không khác. Và lúc đó em chỉ mở 1 File duy nhất.
Em dùng code này trong khi là em xuất file thông báo nộp tiền riêng cho từng Doanh nghiệp (em đang làm bên Thuế)
Với code bài #1 thì việc tập tin được ghi ở Documents là điều dễ hiểu. Vì sao?
Mã:
Filename:=Range("B6").Value

Tôi đoán là B6 chỉ chứa tên tập tin, không chứa toàn bộ đường dẫn. Nếu chỉ có tên thôi thì Excel sẽ lưu ở thư mục mặc định được thiết lập trong File -> Options -> Save. Mà chắc chắn 200% là bạn có mặc định là thư mục Documents.

Sửa thành
Mã:
Sheet2.ExportAsFixedFormat Type:=xlTypePDF, Filename:=filename _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
 
Upvote 0
Coi lại cái đoạn này Filename:=Range("B6").Value. Tôi chưa thấy B6 được gán filename ở chỗ nào.
 
Upvote 0
Coi lại cái đoạn này Filename:=Range("B6").Value. Tôi chưa thấy B6 được gán filename ở chỗ nào.
Chả sao cả. Nếu B6 không được gán filename thì B6 RỖNG. Nếu filename RỖNG thì Excel sẽ lưu với tên là tên tập tin Excel. Chủ thớt có vấn đề khác - ghi ở thư mục khác với thư mục có tập tin với code.
 
Upvote 0
Chả sao cả. Nếu B6 không được gán filename thì B6 RỖNG. Nếu filename RỖNG thì Excel sẽ lưu với tên là tên tập tin Excel. Chủ thớt có vấn đề khác - ghi ở thư mục khác với thư mục có tập tin với code.
Vậy đoạn Filename = ActiveWorkbook.Path & "\" & Sheet2.Range("M2").Value & ".pdf" thấy nó vô duyên. Theo ý của tác giả thì phải lưu pdf theo đường dẫn filename này.
 
Upvote 0
Web KT

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

Back
Top Bottom