Excel VBAで保護された範囲のみをPDFで保存する方法

この記事では、Excel VBAを用いて、特定の保護された範囲だけをPDFとして保存する方法を詳しく解説します。具体的なコード例やその詳細解説、さらには応用例も含めてご紹介します。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

基本的な方法:保護された範囲のみを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として保存する方法にはいくつかの応用例があります。業務の効率化や、報告書の提出など、様々な場面で活用することができます。上記のコードを参考に、ご自身のニーズに合わせてカスタマイズしてみてください。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次