この記事では、Excel VBAを用いて、特定の保護された範囲だけをPDFとして保存する方法を詳しく解説します。具体的なコード例やその詳細解説、さらには応用例も含めてご紹介します。
目次
基本的な方法:保護された範囲のみをPDFで保存
Excelのシート内で特定の範囲が保護されている場合、その範囲だけをPDFとして出力することは、報告書の提出や業務報告の際に非常に便利です。
Sub SaveProtectedRangeAsPDF()
Dim ws As Worksheet
Dim rg As Range
Dim sPath As String
Set ws = ThisWorkbook.Sheets("Sheet1")
Set rg = ws.Range("A1:D10") ' 保護された範囲を指定
sPath = "C:\temp\ProtectedRange.pdf" ' 保存先のパスを指定
rg.ExportAsFixedFormat Type:=xlTypePDF, FileName:=sPath
End Sub
コードの詳細解説
– まず、`Worksheet`オブジェクトとして`ws`、`Range`オブジェクトとして`rg`を定義します。
– `ThisWorkbook.Sheets(“Sheet1”)`でSheet1をターゲットとし、その中の保護された範囲を`ws.Range(“A1:D10”)`で指定しています。
– `sPath`変数には保存先のPDFファイルのパスを指定します。
– `rg.ExportAsFixedFormat`メソッドで指定した範囲をPDFとして出力します。
応用例
応用例1:ユーザーが保存先を選べるようにする
ユーザーがダイアログを使って、保存先のフォルダを指定できるようにします。
Sub SaveProtectedRangeWithDialog()
Dim ws As Worksheet
Dim rg As Range
Dim sPath As String
Dim fd As FileDialog
Set ws = ThisWorkbook.Sheets("Sheet1")
Set rg = ws.Range("A1:D10")
Set fd = Application.FileDialog(msoFileDialogSaveAs)
If fd.Show = -1 Then
sPath = fd.SelectedItems(1)
rg.ExportAsFixedFormat Type:=xlTypePDF, FileName:=sPath
End If
End Sub
応用例2:複数の保護された範囲を一つのPDFにまとめる
複数の保護範囲を指定し、それを一つのPDFとして出力します。
Sub SaveMultipleProtectedRangesAsPDF()
Dim ws As Worksheet
Dim rg1 As Range, rg2 As Range
Dim sPath As String
Set ws = ThisWorkbook.Sheets("Sheet1")
Set rg1 = ws.Range("A1:D10")
Set rg2 = ws.Range("F1:H10")
sPath = "C:\temp\MultipleRanges.pdf"
Union(rg1, rg2).ExportAsFixedFormat Type:=xlTypePDF, FileName:=sPath
End Sub
応用例3:現在の日付をファイル名に含める
保存するPDFのファイル名に現在の日付を追加します。
Sub SaveProtectedRangeWithDate()
Dim ws As Worksheet
Dim rg As Range
Dim sPath As String
Set ws = ThisWorkbook.Sheets("Sheet1")
Set rg = ws.Range("A1:D10")
sPath = "C:\temp\ProtectedRange_" & Format(Now(), "YYYYMMDD") & ".pdf"
rg.ExportAsFixedFormat Type:=xlTypePDF, FileName:=sPath
End Sub
まとめ
Excel VBAを利用して、保護された範囲をPDFとして保存する方法にはいくつかの応用例があります。業務の効率化や、報告書の提出など、様々な場面で活用することができます。上記のコードを参考に、ご自身のニーズに合わせてカスタマイズしてみてください。
コメント