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

Chia sẻ bởi:hands
★★★★★
Quảng cáo

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:FileABC.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ị.

Bạn thử đoạn code này xem sao
ActiveSheet.ExportAsFixedFormat xlTypePDF, ThisWorkbook.FullName

www.giaiphapexcel.com/diendan/threads/h%E1%BB%8Fi-v%E1%BB%81-code-vba-chuy%E1%BB%83n-file-excel-sang-pdf.59491/

Khóa học Power PI – Ứng dung trong Nhân sự
Khóa học SprinGO phù hợp

Khóa học Power PI – Ứng dung trong Nhân sự

TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...

Xem khóa học
★★★★★ 5 ★ 1 👤 5 ▥ 0
Quảng cáo

Bạn nên đọc

5 Responses

  1. hands says:

    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

    Thử thế này:
    filepdf = ThisWorkbook.Path & "" & Range("G10") & ".pdf"
    ActiveSheet.ExportAsFixedFormat xlTypePDF, filepdf

  2. hands says:

    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:UsersChungNguyenPCDesktop" & "" & 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.

  3. hands says:

    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

    Ws.ExportAsFixedFormat xlTypePDF, ThisWorkbook.Path & "" & NameFile & "-" & Minute(Now()) & "-" & Second(Now())

    Thử thay như thế này xem.

    ngon anh nhé! cảm ơn anh nhìu lắm ạ! hi. Nhưng thêm giờ thì làm sao ạ

    – Thêm giờ thì Hour(now())
    Dùng Format(now(),"hh-mm-ss")
    Thêm giờ-phút-giây thì vẫn có thể trùng!!!

  4. hands says:

    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 ạ

    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

    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.

  5. hands says:

    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:

    OpenAfterPublish:=True

    phía sau đoạn:

    => là được.

    Đại khái thế này:

    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

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm