Để lưu một phạm vi đã chọn trong excel (giả sử như một biên nhận) dưới dạng PDF trong Excel bằng cách sử dụng VBA, hãy sử dụng cú pháp bên dưới.

Mã chung

Sub SaveRangeAsPDF()

Range.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

"C:\Users\file_name", Quality:=xlQualityStandard, _

IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub

Mã trên là mã chung để lưu một phạm vi cố định dưới dạng tài liệu PDF. Khi macro bản ghi của bạn trong khi bạn xuất excel sang PDF, một mã tương tự sẽ xuất hiện.

Phạm vi: * Nó có thể là một phạm vi cố định, một phạm vi động hoặc một lựa chọn. Bạn cần phải xác định nó.

Tên tệp: Đây là tên đủ điều kiện của pdf. Định nghĩa nó dưới dạng một chuỗi.

Phần còn lại của các biến có thể được để nguyên. Tôi đã giải thích chúng sau ví dụ.

Ví dụ: In biên nhận Excel dưới dạng PDF bằng VBA Giả sử bạn phải in và gửi biên lai trong Excel một cách thường xuyên. Trong trường hợp đó, bạn muốn nó tự động. Bạn sẽ không muốn xuất excel sang pdf nhiều lần. Nếu bạn có thể chỉ cần sử dụng một nút để làm điều này, nó sẽ rất hữu ích, phải không?

Ở đây, tôi đã thiết kế mẫu biên nhận này. Tôi muốn in / lưu / xuất nó dưới dạng pdf bằng nút “Tạo PDF”.

imageThis receipt covers the range “A2:L21”. I have already set the print area.

image

Để lưu trên phạm vi excel này dưới dạng PDF, chúng tôi sẽ sử dụng mã VBA chung đã đề cập ở trên để xuất trang tính excel sang pdf. Chúng tôi sẽ điều chỉnh mã theo yêu cầu của chúng tôi.

Sub PrintSelectionToPDF()

Dim invoiceRng As Range

Dim pdfile As String

'Setting range to be printed

Set invoiceRng = Range("A1:L21")

'setting file name with a time stamp.

pdfile = "invoice" & "_" & Format(Now(), "yyyymmdd_hhmmss") & ".pdf"

'setting the fulli qualified name. The resultent pdf will be saved where the main file exists.

pdfile = ThisWorkbook.Path & strfile

invoiceRng.ExportAsFixedFormat Type:=xlTypePDF, _

Filename:= pdfile, _

Quality:= xlQualityStandard, _

IncludeDocProperties:=True, _

IgnorePrintAreas:=False, _

OpenAfterPublish:=False

End Sub

Sử dụng mã:

Sao chép mã trên trong tệp biên nhận của bạn bằng cách mở trình chỉnh sửa VBA (sử dụng Alt + F11). Điều chỉnh phạm vi và đường dẫn tệp (nếu bạn muốn) trong mã bạn muốn in. Bạn có thể tải xuống tệp làm việc bên dưới.

image 48Save Excel Range as PDF using VBA]

Giải thích:

Dim invoiceRng As Range

Dim pdfile As String

Mã rất đơn giản. Đầu tiên, chúng tôi đã tạo hai biến. “InvoiceRng as Range” cho phạm vi / trang tính mà chúng tôi muốn lưu dưới dạng pdf. strFile cho tên tệp đủ điều kiện của tệp PDF kết quả.

Set invoiceRng = Range("A1:L21")

Vì phạm vi in ​​của chúng tôi là cố định, chúng tôi đặt phạm vi hóa đơn là Phạm vi (“A1: L21”).

pdfile = "invoice" & "_" & Format(Now(), "yyyymmdd_hhmmss") & ".pdf"

pdfile = ThisWorkbook.Path & strfile

Trong hai dòng trên, đầu tiên chúng ta đặt tên tệp bằng dấu thời gian và sau đó thêm vào đường dẫn của tệp chính. Do đó, pdfile chứa tên đủ điều kiện của tệp pdf kết quả.

invoiceRng.ExportAsFixedFormat _

Type:=xlTypePDF, _

Filename:= pdfile, _

Quality:= xlQualityStandard, _

IncludeDocProperties:=True, _

IgnorePrintAreas:=True, _

OpenAfterPublish:=False

Cuối cùng, chúng tôi sử dụng phương thức ExpoortAsFixedFormat của lớp Range để in phạm vi Excel đã xác định dưới dạng PDF. Chúng tôi định nghĩa kiểu là xlTypePDF. Một lựa chọn khác là xlTypeXPS, sẽ lưu dải ô đã chọn dưới dạng tệp XPS.

Chúng tôi đặt Tên tệp là pdfile, chứa chuỗi tên đủ điều kiện của tệp pdf. Bạn có thể viết một văn bản được mã hóa cứng tại đây hoặc tùy chỉnh nó theo nhu cầu của bạn.

Tiếp theo, chúng tôi đặt chất lượng của pdfile là xlQualityStandard. Chúng tôi có một lựa chọn khác là xlQualityMinimum.

Tiếp theo, chúng tôi đặt các Thuộc tính Bao gồm là Đúng. Nó có nghĩa là PDF kết quả sẽ có các thuộc tính của một Tài liệu.

Sau đó, chúng tôi đặt Bỏ quaPrintAreas là Đúng. Nó có nghĩa là nó sẽ bỏ qua bất kỳ vùng in nào đã được thiết lập.

Cuối cùng, chúng tôi đặt OpenAfterPublish là False. Nó có nghĩa là tệp bạn tạo sẽ không tự động mở. Tôi đặt nó là false vì tôi tạo 100 tệp bằng vòng lặp và tôi không muốn chúng mở. Nếu bạn muốn mở tệp sau khi tạo bằng excel, hãy đặt nó là True.

Sử dụng phạm vi in ​​đã chọn dưới dạng pdf

Một cách sử dụng cơ bản là in phạm vi đã chọn chỉ bằng cách nhấp vào một nút. Nhưng cách sử dụng tốt nhất là sử dụng nó trong một vòng lặp mà bạn cần tạo nhiều biên nhận cho các khách hàng khác nhau. Tạo một phụ để điền dữ liệu và sau đó sử dụng mã này để in phạm vi đã chọn trong một vòng lặp.

Vì vậy, các bạn, đây là cách bạn có thể lưu phạm vi đã chọn dưới dạng pdf. Tôi hy vọng nó hữu ích cho bạn. Nếu bạn vẫn có bất kỳ nghi ngờ hoặc truy vấn nào liên quan đến in excel bằng VBA, hãy hỏi trong phần nhận xét bên dưới.

Bài viết liên quan:

Bài viết phổ biến:

Tải xuống tệp làm việc.