保存エクセルVBAレンジを使用してPDFとして
選択した範囲を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として印刷/保存/エクスポートしたい。
This receipt covers the range “A2:L21”. I have already set the print area.
この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 [
Save 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は、新しいワークブックを簡単に追加しますが…