選択した範囲をExcel(領収書など)でVBAを使用してExcelでPDFとして保存するには、以下の構文を使用します。

一般的なコード

Sub SaveRangeAsPDF()

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

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

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

End Sub

上記のコードは、固定範囲をPDFドキュメントとして保存するための一般的なコードです。 ExcelをPDFにエクスポートするときにレコードマクロを使用すると、同様のコードが表示されます。

範囲:*固定範囲、ダイナミックレンジ、または選択範囲にすることができます。あなたはそれを定義する必要があります。

ファイル名:これはpdfの完全修飾名です。文字列として定義します。

残りの変数はそのままにしておくことができます。例を挙げて説明しました。

例:VBAを使用してExcelの領収書をPDFとして印刷する定期的にExcelで領収書を印刷して送信する必要があるとします。その場合は、自動化する必要があります。あなたは何度も何度もPDFへのエクスポートエクセルをしたくないでしょう。ボタンを使ってこれを行うことができれば、それは役に立ちますね。

ここでは、この領収書の形式を設計しました。 「PDFを作成」ボタンを使用してPDFとして印刷/保存/エクスポートしたい。

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

image

このExcelの範囲をPDFとして保存するために、ExcelシートをPDFにエクスポートする上記の一般的なVBAコードを使用します。要件に応じてコードを調整します。

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

コードの使用:

VBAエディターを開いて上記のコードをレシートファイルにコピーします(Alt + F11を使用)。印刷するコードの範囲とファイルパス(必要な場合)を調整します。以下の作業ファイルをダウンロードできます。

`link:/wp-content-uploads-2019-12-Save-Excel-Range-as-PDF-using-VBA.xls [

image 48Save Excel Range as PDF using VBA]

説明:

Dim invoiceRng As Range

Dim pdfile As String

コードは単純です。まず、2つの変数を作成しました。 PDFとして保存したい範囲/シートの「InvoiceRngasRange」。結果のPDFの完全修飾ファイル名のstrFile。

Set invoiceRng = Range("A1:L21")

印刷範囲が固定されているため、請求書の範囲をRange( “A1:L21″)に設定します。

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

pdfile = ThisWorkbook.Path & strfile

上記の2行では、最初にタイムスタンプを使用してファイルに名前を付けてから、メインファイルのパスに追加します。その結果、pdfileには、結果のpdfファイルの完全修飾名が含まれます。

invoiceRng.ExportAsFixedFormat _

Type:=xlTypePDF, _

Filename:= pdfile, _

Quality:= xlQualityStandard, _

IncludeDocProperties:=True, _

IgnorePrintAreas:=True, _

OpenAfterPublish:=False

最後に、RangeクラスのExpoortAsFixedFormatメソッドを使用して、定義されたExcel範囲をPDFとして出力します。タイプをxlTypePDFとして定義します。もう1つの選択肢はxlTypeXPSで、選択した範囲をXPSファイルとして保存します。

ファイル名をpdfileとして設定します。これには、pdfファイルの完全修飾名の文字列が含まれます。ここにハードコードされたテキストを書くか、必要に応じてカスタマイズすることができます。

次に、pdfileの品質をxlQualityStandardとして設定します。 xlQualityMinimumとして別の選択肢があります。

次に、IncludeDocPropertiesをTrueに設定します。これは、結果のPDFがドキュメントのプロパティを持つことを意味します。

次に、IgnorePrintAreasをTrueに設定します。これは、すでに設定されている印刷領域を無視することを意味します。

最後に、OpenAfterPublishをFalseに設定します。これは、作成したファイルが自動的に開かないことを意味します。ループを使用して数百のファイルを作成し、それらを開かないようにするため、falseに設定しました。 Excelを使用して作成した後にファイルを開きたい場合は、Trueに設定します。

選択した範囲をpdfとして印刷する使用法

基本的な使用法の1つは、ボタンを1つクリックするだけで、選択した範囲を印刷することです。ただし、最適な使用法は、さまざまなクライアントに対して複数のレシートを作成する必要があるループで使用することです。データを入力するためのサブを作成し、このコードを使用して、選択した範囲をループで出力します。

そうそう、これで選択した範囲をpdfとして保存できます。お役に立てば幸いです。 VBAを使用したExcelでの印刷に関して疑問や質問がある場合は、以下のコメントセクションで質問してください。

関連記事:

link:/ Printing-in-vba-print-all-workbooks-in-a-folder-using-vba-in-microsoft-excel [MicrosoftExcelのVBAを使用してフォルダー内のすべてのワークブックを印刷する] |このVBAコードを使用して、を使用して各Excelワークブックを印刷してフォルダーに保存します。

人気の記事:

link:/ general-topics-in-vba-split-excel-sheet-into-multiple-files-based-on-column-using-vba [ExcelシートをVBAを使用して列に基づいて複数のファイルに分割する] |このVBAコードは、指定された列の一意の値に基づいてExcelシートを分割します。

作業ファイルをダウンロードします。

link:/ general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Microsoft Excel2016でVBAを使用して警告メッセージをオフにする] |実行中のVBAコードを中断する警告メッセージをオフにするには、Applicationクラスを使用します。

link:/ files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Microsoft Excel2016でVBAを使用して新しいブックを追加および保存する] | VBAを使用してワークブックを追加および保存するには、Workbooksクラスを使用します。 Workbooks.Addは、新しいワークブックを簡単に追加しますが…​