Hỏi về code VBA chuyển file excel sang pdf (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

sonick1988

Thành viên mới
Tham gia
27/12/11
Bài viết
3
Được thích
5
Chào các anh chị, do công việc yêu cầu nên em thường xuyên phải xuất file từ *.xls hoặc *.xlsx sang *.PDF
Ví dụ: Em đang làm việc với file ABC.xlsx (sử dụng Office 2010) trong thư mục D:\File (do yêu cầu công việc nên em thường xuyên phải copy folder này ra và đổi tên để theo dõi). Khi em viết code để chuyển 1 số sheet trong file ABC.xlsx này sang file ABC.pdf như sau:

Sub chuyenfile()
'
' chuyenfile Macro
'
'
Sheets(Array("A", "B", "C")).Select

Sheets("A").active

activesheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="D:\File\ABC.pdf", Quality:= xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub

Tuy nhiên, với đoạn code trên thì khi em copy folder này và đổi tên folder (ví dụ là folder XYZ) thì file ABC.xlsx trong folder XYZ khi chuyển thành file ABC.pdf trong folder D:\File (hoặc báo lỗi nếu tên folder File đã ko còn trong D:\),
Em nhờ các anh chị giúp em đoàn code thế nào cho khi xuất thành file .pdf thì file đó sẽ được lưu trong folder hiện hành đang làm việc. (trong ví dụ trên khi em copy và đổi tên folder File thành folder XYZ thì khi em thao tác trên file ABC.xlsx trong folder sẽ tự động xuất và lưu file ABC.pdf trong folder XYZ mà không cần phải vào chỉnh sửa trong code trong VBA).
Hoặc em nhờ các anh chị có thể giúp em đoạn code sau khi đã chọn các sheet trong file ABC.xlsx thì sẽ tự động hiện cửa sổ Save As không? (vì em sử dụng Office 2010, khi hiện cửa sổ Save As thì có hỗ trợ chuyển sang file PDF mà không cần phần mềm khác hỗ trợ như các phiên bản Office trước đây).
Chân thành cám ơn các anh chị.
 
Lần chỉnh sửa cuối:
mấy huynh ơi!
em muốn tìm một code để xuất 1 sheet bất kỳ nào sang file pdf. nhưng tim mãi không thấy. mong mấy huynh có thể giúp em dc ko. chỉ em cụ thể thì càng tốt ạ. Cảm ơn mấy huynh trước !!!!
 
Upvote 0
mấy huynh ơi!
em muốn tìm một code để xuất 1 sheet bất kỳ nào sang file pdf. nhưng tim mãi không thấy. mong mấy huynh có thể giúp em dc ko. chỉ em cụ thể thì càng tốt ạ. Cảm ơn mấy huynh trước !!!!

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. Thanks
 

File đính kèm

  • 123.jpg
    123.jpg
    16.3 KB · Đọc: 390
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Nhờ A/C code giúp e với
VBA xuất từ excel sang pdf với điều kiện như sau:
Đặt tên file xuất sang pdf theo tên thay đổi theo giá trị tại ô G10 (G10 là giá trị nằm trong danh sách)
vd: Nếu ô G10 là A thì xuất đặt tên file pdf là A.pdf
Nếu ô G10 là B thì xuất đặt tên file pdf là B.pdf
Nếu ô G10 là C thì xuất đặt tên file pdf là C.pdf

Chân thành cám ơn
 
Upvote 0
Nhờ A/C code giúp e với
VBA xuất từ excel sang pdf với điều kiện như sau:
Đặt tên file xuất sang pdf theo tên thay đổi theo giá trị tại ô G10 (G10 là giá trị nằm trong danh sách)
vd: Nếu ô G10 là A thì xuất đặt tên file pdf là A.pdf
Nếu ô G10 là B thì xuất đặt tên file pdf là B.pdf
Nếu ô G10 là C thì xuất đặt tên file pdf là C.pdf

Chân thành cám ơn

Em cũng đang thắc mắc vấn đề này.Nhờ A/C hỗ trợ
 
Upvote 0
Bạn thử đoạn code này xem sao
PHP:
ActiveSheet.ExportAsFixedFormat xlTypePDF, ThisWorkbook.FullName
Chào A
E có 1 sheet (sheet này chạy cho 7 lot "đã chạy bằng biến" giờ xuất khác nhau) cần in 3 liên (kế toán, kho, khách hàng) cần in ra pdf nhưng chưa nghĩ ra cách viết code.
A chỉ giúp e với.
Thanks
 
Upvote 0
Em muốn lưu ở chỗ khác ngoài dekop thì phải làm sao anh! chỉ em với

- 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.
 
Upvote 0
- 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.
Cảm ơn anh nhìu lắm ạ.
 
Upvote 0
- 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.
Cho em hỏi thêm 1 ý nữa được không ạ! trả là có lúc em in 1 phiếu 2 lần cùng tên thì toàn phiếu sau đè mất phiếu trước ! vậy có cách nào để phiếu sau có (1) hoặc (2) được không ạ. hay 1,2,3,4,5,6... cũng đc chỉ cần giữ được tên là đc ạ!
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
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
 
Upvote 0
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.
 
Upvote 0
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 ạ
 
Upvote 0
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.
 
Upvote 0
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
 
Upvote 0
- 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.
 
Upvote 0
- 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
 
Upvote 0
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
 
Upvote 0
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
 
Upvote 0
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, thanks!
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:
Upvote 0
em cũng chạy mà nó thé này đây ai giúp e với
 

File đính kèm

  • 111111111.PNG
    111111111.PNG
    23.7 KB · Đọc: 31
Upvote 0
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!
 
Upvote 0
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
 
Upvote 0
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)
 
Upvote 0
Em nhờ các anh/chị giúp em về việc tạo VBA in liên tục sang Pdf với tên lưu mặc định trong ô có sẵn, cụ thể như sau:
1. File em đính kèm, Sheet cần in là "Receipt"
2. Em muốn xuất file (in) sang Pdf và tự lưu tên theo ô R1 trong sheet Receipt (sheet hiện hành). Mỗi lần in mình có thể điều chỉnh theo ý muốn "từ số" ô O1, "đến số" ô P6.
3. Thư mục lưu các file Pdf trùng với thư mục chứa file excel đang mở, (hoặc điều chỉnh được đường dẫn càng tốt).
4. Trong quá trình xuất file Pdf thì nó không hiển thị những thứ như save file name,.... Và khi kết thúc quá trình sẽ hiện bảng, đã hoàn thành việc xuất pdf.
5. Sheet Receipt có chạy kèm VBA của diễn đàn GPE https://www.giaiphapexcel.com/diendan/threads/vba-in-hàng-loạt.140406/

Đây là lần đầu em post lên diễn đàn, nếu em viết không rõ ràng vấn đề lắm thì các anh/chị nói giúp em!
Em cảm ơn!!
 

File đính kèm

Upvote 0
Em nhờ các anh/chị giúp em về việc tạo VBA in liên tục sang Pdf với tên lưu mặc định trong ô có sẵn, cụ thể như sau:
1. File em đính kèm, Sheet cần in là "Receipt"
2. Em muốn xuất file (in) sang Pdf và tự lưu tên theo ô R1 trong sheet Receipt (sheet hiện hành). Mỗi lần in mình có thể điều chỉnh theo ý muốn "từ số" ô O1, "đến số" ô P6.
3. Thư mục lưu các file Pdf trùng với thư mục chứa file excel đang mở, (hoặc điều chỉnh được đường dẫn càng tốt).
4. Trong quá trình xuất file Pdf thì nó không hiển thị những thứ như save file name,.... Và khi kết thúc quá trình sẽ hiện bảng, đã hoàn thành việc xuất pdf.
5. Sheet Receipt có chạy kèm VBA của diễn đàn GPE https://www.giaiphapexcel.com/diendan/threads/vba-in-hàng-loạt.140406/

Đây là lần đầu em post lên diễn đàn, nếu em viết không rõ ràng vấn đề lắm thì các anh/chị nói giúp em!
Em cảm ơn!!
Bác @quick87, @phuyen89 có thể giúp mình phần ở trên được không :)!
Em cảm ơn nhiều!!
 
Upvote 0
Sau một thời gian mò mẫm thì mình đã làm xong phần trên :)
Mình nghĩ các anh chị rành về VBA thì viết rất nhanh, nhưng với gà mờ mới học như mình thì lâu hơn nhiều!!
Code của em đây ạ :)

Mã:
Sub InKetQua()
  Dim TuSo, DenSo, BatDau, KetThuc As Long
 
Application.ScreenUpdating = False
 
  TuSo = [O5]
  DenSo = [p6]
  KetThuc = 2

    ActiveSheet.PageSetup.PrintArea = "$A$1:$L$24"
  For BatDau = TuSo To DenSo Step KetThuc
    [O5] = BatDau
    ActiveSheet.PrintOut PrToFilename:=ThisWorkbook.Path & Application.PathSeparator & ThisWorkbook.ActiveSheet.[R1] & ".pdf"
  Next BatDau
 
Application.ScreenUpdating = True
MsgBox "Chuyen sang Pdf xong"
End Sub
P/S: cả 3 comment liên tiếp đều là của mình hết *_*
 
Upvote 0
Chào AC tiền bối,

Em xin hỏi xíu: Mình có thể chuyển từ file Word sang file .dpf bằng code không ạ?
Word không có quy định ô, làm sao mình đặt tên file_name_dpf theo ô mình chọn.
Em có đính kèm ví dụ, mong các AC giúp đỡ.

Cảm ơn AC nhiều.
 

File đính kèm

Upvote 0
Em chào các anh chị.
Các anh chị cho em hỏi ké. Em có một đoạn code nhỏ nhỏ như file đính kèm. Anh chị cho em hỏi vì sao khi e để mảng arr kiểu byte thì đoạn code không thể chạy đến hoàn thiện được, còn để kiểu khác như integer thì lại chạy được.
Em xin cảm ơn.
Đoạn code thế này ạ:
Sub v()
Dim arr(1 To 1, 1 To 5) As Byte
Dim i As Byte
For i = 1 To 5
arr(1, i) = i
MsgBox "dkf: " & arr(1, i)
Next i
Range("A1").Resize(1, 5) = arr
End Sub
 

File đính kèm

Upvote 0
em muốn cố định 1 khu vực trong excel để xuất sang file PDF theo khổ dọc A4 và tự động lưu pdf với tên của 1 ô trong excel thì code như nào ạ,anh chị giúp e được không ạ
 
Upvote 0
em muốn cố định 1 khu vực trong excel để xuất sang file PDF theo khổ dọc A4 và tự động lưu pdf với tên của 1 ô trong excel thì code như nào ạ,anh chị giúp e được không ạ
Bạn chịu khó sửa chỗ viết tắt, thêm mấy chữ viết hoa đầu dòng, đầu câu và gửi file ví dụ lên có lẽ sẽ nhanh được hỗ trợ hơn đó.
 
Upvote 0

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

Back
Top Bottom