Hỏi về code VBA chuyển file excel sang pdf

phuyen89

Thành viên tích cực
Tham gia ngày
20 Tháng mười một 2008
Bài viết
867
Được thích
329
Điểm
735
Tuổi
30
Giờ còn đúng 1 việc cần nhờ ! là thêm giờ và phút thực tế vào tên file để không bị trùng nhau!
filepdf = ThisWorkbook.Path & "\" & Range("G10") & ".pdf"
ActiveSheet.ExportAsFixedFormat xlTypePDF, filepdf
Mã:
Ws.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & "\" & NameFile & "-" & Minute(Now()) & "-" & Second(Now())
Thử thay như thế này xem.
 

mai tien hai

Thành viên mới
Tham gia ngày
3 Tháng năm 2017
Bài viết
5
Được thích
1
Điểm
0
Tuổi
32
Em cũng viết Code như các anh hướng dẫn. File PDF đượcc tao.

Sub Xuat_file_PDF()

Dim n As Long, i As Long
n = Sheets("LOCAL").Range("B65000").End(xlUp).Row

For i = 11 To n
Sheets("Payslip").Range("c5") = Sheets("LOCAL").Range("B" & i)

Sheets("Payslip").ExportAsFixedFormat xlTypePDF, Range("o2") & "\" & Range("C5") & ".pdf"

Next

End Sub


Tuy nhiên sau đó xong VBA ra thông báo "Doccument not saved". Bác nào giúp em tắt cái thông báo đấy hoặc tối ưu code cho em với ạ
 

phuyen89

Thành viên tích cực
Tham gia ngày
20 Tháng mười một 2008
Bài viết
867
Được thích
329
Điểm
735
Tuổi
30
Em cũng viết Code như các anh hướng dẫn. File PDF đượcc tao.

Sub Xuat_file_PDF()

Dim n As Long, i As Long
n = Sheets("LOCAL").Range("B65000").End(xlUp).Row

For i = 11 To n
Sheets("Payslip").Range("c5") = Sheets("LOCAL").Range("B" & i)

Sheets("Payslip").ExportAsFixedFormat xlTypePDF, Range("o2") & "\" & Range("C5") & ".pdf"

Next

End Sub


Tuy nhiên sau đó xong VBA ra thông báo "Doccument not saved". Bác nào giúp em tắt cái thông báo đấy hoặc tối ưu code cho em với ạ
Mã:
Sub Xuat_file_PDF()

Dim n As Long, i As Long, NameFile As String
n = Sheets("LOCAL").Range("B65000").End(xlUp).Row

For i = 11 To n
    NameFile = Sheets("Payslip").Range("O2") & "\" & Range("C5") & ".pdf"
    Sheets("Payslip").Range("c5").Value = Sheets("LOCAL").Range("B" & i)

    Sheets("Payslip").ExportAsFixedFormat xlTypePDF, NameFile

Next

End Sub
- Đoạn code của bạn, hoàn toàn bình thường, vấn đề còn lại là cai range("O2").value của bạn nó chứa cái gì?
- Và bạn đang đứng ở Sheet nào để chạy code, vì cái đoạn bạn khai báo không tuong minh, nên rất dễ bị nhầm lẫn Sheet.
 

mai tien hai

Thành viên mới
Tham gia ngày
3 Tháng năm 2017
Bài viết
5
Được thích
1
Điểm
0
Tuổi
32
Mã:
Sub Xuat_file_PDF()

Dim n As Long, i As Long, NameFile As String
n = Sheets("LOCAL").Range("B65000").End(xlUp).Row

For i = 11 To n
    NameFile = Sheets("Payslip").Range("O2") & "\" & Range("C5") & ".pdf"
    Sheets("Payslip").Range("c5").Value = Sheets("LOCAL").Range("B" & i)

    Sheets("Payslip").ExportAsFixedFormat xlTypePDF, NameFile

Next

End Sub
- Đoạn code của bạn, hoàn toàn bình thường, vấn đề còn lại là cai range("O2").value của bạn nó chứa cái gì?
- Và bạn đang đứng ở Sheet nào để chạy code, vì cái đoạn bạn khai báo không tuong minh, nên rất dễ bị nhầm lẫn Sheet.
- Cái Range("O2") của mình chứa đường linh thư mục à file PDF sẽ xuất ra. Mỗi lần mình muốn thay đổi địa chỉ lưu file thì thay đổi ở ô O2.
- Ngoài ra, Khi mình chạy macro thì mình chạy ở sheets("payslip").
- Mình chỉ không hiểu vì sao chạy code này lại ra cái thông báo " Doccument not saved". Mặc dù files PDF vẫn save bình thường
 

phuyen89

Thành viên tích cực
Tham gia ngày
20 Tháng mười một 2008
Bài viết
867
Được thích
329
Điểm
735
Tuổi
30
- Cái Range("O2") của mình chứa đường linh thư mục à file PDF sẽ xuất ra. Mỗi lần mình muốn thay đổi địa chỉ lưu file thì thay đổi ở ô O2.
- Ngoài ra, Khi mình chạy macro thì mình chạy ở sheets("payslip").
- Mình chỉ không hiểu vì sao chạy code này lại ra cái thông báo " Doccument not saved". Mặc dù files PDF vẫn save bình thường
Bạn upfile lên là rõ nhất. Không có File, nói ra ai cũng hiểu, mà sau cùng là mỗi ngưởi hiểu một hướng khác nhau.
 

letienmai

Thành viên chính thức
Tham gia ngày
16 Tháng bảy 2014
Bài viết
80
Được thích
19
Điểm
370
Tuổi
29
- Có 02 cách.
+ Cách 1: Bạn copy cái file bạn đang làm đó, ra ngoài desktop, thì khi bạn chạy code, nó sẽ lưu ngoài Desktop cho bạn.
+ Cách 2: Sửa lại đường dẫn lưu File từ ThisWorkbook.Path & "\" & Range("G10") & ".pdf" thành "C:\Users\ChungNguyenPC\Desktop" & "\" & Range("G10") & ".pdf"
Ví dụ thôi nhé, vì đường dẫn của bạn, đường dẫn của Folder phụ thuộc vào Windows, và User nữa.
Chào anh. cho em hỏi thế sau khi xuất sang file PDF thì mình viết code gì để nó mở file lên. xin cám ơn
 

quick87

(/ội...
Tham gia ngày
8 Tháng tư 2008
Bài viết
180
Được thích
138
Điểm
680
Chào anh. cho em hỏi thế sau khi xuất sang file PDF thì mình viết code gì để nó mở file lên. xin cám ơn
Bạn thêm câu lệnh:
Mã:
OpenAfterPublish:=True
phía sau đoạn:
Sheets("Payslip").ExportAsFixedFormat xlTypePDF, NameFile,
=> là được.

Đại khái thế này:
Mã:
Sub Xuat_file_PDF()

Dim n As Long, i As Long, NameFile As String
n = Sheets("LOCAL").Range("B65000").End(xlUp).Row

For i = 11 To n
    NameFile = Sheets("Payslip").Range("O2") & "\" & Range("C5") & ".pdf"
    Sheets("Payslip").Range("c5").Value = Sheets("LOCAL").Range("B" & i)

    Sheets("Payslip").ExportAsFixedFormat xlTypePDF, NameFile, OpenAfterPublish:=True

Next

End Sub
 

duyhungpdv

Thành viên mới
Tham gia ngày
14 Tháng mười hai 2017
Bài viết
4
Được thích
0
Điểm
163
Tuổi
30
Em chào các anh ạ! Cảm ơn các anh đã chia sẻ kiến thức cũng như kinh nghiệm trong bài này
em đang dùng đoạn code này rất OK. Nay do nhu cầu e cần lệnh in chuyển sang xuất ra file excel chứ không phải PDF nữa để gửi Gmail thì không biết làm sao!
Mong mọi người giúp đỡ! em xin cảm ơn!
filepdf = ThisWorkbook.Path & "\" & Range("G10") & ".pdf"
ActiveSheet.ExportAsFixedFormat xlTypePDF, filepdf
 

trongtuandkt

Thành viên mới
Tham gia ngày
10 Tháng mười 2018
Bài viết
6
Được thích
0
Điểm
13
Tuổi
31
Mình muốn xuất ra 1 file pdf (nhiều trang) nhưng toàn bị ghi đè chỉ ra 1 trang cuối bạn nào chỉnh code hộ mình với, Cảm ơn!
sub chuyenpdf
dim i&
a1 = Sheet2.Range("M19").Value
a2 = Sheet2.Range("M20").Value
if a1<=a2 then
For i = a1 to a2
Sheet2.Range("L16").Value = (i - 1) * 10 + 1
Sheet2.ExportAsFixedFormat xlTypePDF, ThisWorkbook.FullName

next
end if
end sub
 
Lần chỉnh sửa cuối:

THANH TPM

Thành viên mới
Tham gia ngày
10 Tháng một 2019
Bài viết
1
Được thích
0
Điểm
13
Tuổi
28
Xin cho mình hỏi trong máy bạn có cài thêm chương trinh hỗ trợ xuất sang PDF không. Ví dụ CutePDF, ...v..vv
Hoặc trong Save, Save as của Office Excel, giống như hình này. Hinh đính kèm của em bị lỗi Mod sửa lại giúp. Cảm ơn
Bạn ơi, mh cũng muốn xuất 1 sheet bất kỳ hoặc tất cả sang PDF, tên file PDF là tên của sheet. mh cảm ơn!
 

bicutit

Thành viên mới
Tham gia ngày
26 Tháng mười một 2010
Bài viết
31
Được thích
0
Điểm
363
Tuổi
35
Chào các bác, em đang xuất file pdf như thế này: ( xuất file excel sang file pdf, chỉ lấy trang 1, với tên file ở ô H20 và để file đó vào folder pdf ở desktop)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\HP\Desktop\pdf" & "\" & Range("H20") & ".pdf" _
, Quality:=xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, From:=1, To:=1, OpenAfterPublish:=False


Bây giờ em muốn lấy dữ liệu H20 từ sheets khác thì sử dụng hàm for ( ý của em là ô H20 ở sheets 1 thì sẽ bằng lần lượt từ A2 đến A10 ở sheets 2 và xuất ra 9 file pdf như trên ) mà lệnh sau bị sai, các bác sửa giùm em với
for i=2 to 10
Sheets("Sheets 1").Range("H20")= Sheets("Sheet2").Range("Ai")

Cảm ơm
 

giaiphap

Thành viên gạo cội
Tham gia ngày
12 Tháng ba 2007
Bài viết
4,670
Được thích
3,855
Điểm
860
Chào các bác, em đang xuất file pdf như thế này: ( xuất file excel sang file pdf, chỉ lấy trang 1, với tên file ở ô H20 và để file đó vào folder pdf ở desktop)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"C:\Users\HP\Desktop\pdf" & "\" & Range("H20") & ".pdf" _
, Quality:=xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, From:=1, To:=1, OpenAfterPublish:=False


Bây giờ em muốn lấy dữ liệu H20 từ sheets khác thì sử dụng hàm for ( ý của em là ô H20 ở sheets 1 thì sẽ bằng lần lượt từ A2 đến A10 ở sheets 2 và xuất ra 9 file pdf như trên ) mà lệnh sau bị sai, các bác sửa giùm em với
for i=2 to 10
Sheets("Sheets 1").Range("H20")= Sheets("Sheet2").Range("Ai")

Cảm ơm
Chổ này Range("Ai") sửa lại là Range("A" & i)
 
Top