Excel VBAを使用して特定のキーワードを含むドキュメントをPDFで自動保存する方法

この記事では、Excel VBAを使用して特定のキーワードを含むドキュメントをPDFで自動保存する方法を詳細に説明します。初心者でも理解しやすいように具体的なコード例、その詳細解説、および応用例を3つ以上提供しています。

目次

Excel VBAの基本

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

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

基本的な自動保存のコード


Sub SaveAsPDFWithKeyword()
    Dim ws As Worksheet
    Dim keyword As String
    Dim savePath As String

    ' 対象のワークシートを指定
    Set ws = ThisWorkbook.Worksheets("Sheet1")

    ' 検索するキーワードを指定
    keyword = "特定キーワード"

    ' キーワードが含まれるか確認
    If InStr(1, ws.Cells.Value, keyword, vbTextCompare) Then
        ' 保存先のパスを指定
        savePath = "C:\path\to\save\document.pdf"
        
        ' PDFとして保存
        ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=savePath
    End If
End Sub

コードの詳細解説

上記のコードは、指定したワークシート内の全セルに対して特定のキーワードが含まれているかどうかを確認し、含まれていればそのワークシートをPDFとして指定した場所に保存するものです。

– `Dim ws As Worksheet`: 対象となるワークシートを参照するための変数を宣言。
– `InStr`関数: 第3引数に指定したテキストが第2引数に指定したテキストの中に存在するかを確認します。存在する場合、その位置(1から始まる)を返す。
– `ExportAsFixedFormat`: 指定した範囲をPDFとして保存するためのメソッド。

応用例1:複数のシートをPDFで保存


Sub SaveMultipleSheetsAsPDF()
    Dim sh As Worksheet
    Dim keyword As String
    Dim savePath As String
    Dim shs() As String
    Dim i As Integer, count As Integer

    keyword = "特定キーワード"
    count = 0

    For Each sh In ThisWorkbook.Worksheets
        If InStr(1, sh.Cells.Value, keyword, vbTextCompare) Then
            ReDim Preserve shs(count)
            shs(count) = sh.Name
            count = count + 1
        End If
    Next sh

    If count > 0 Then
        savePath = "C:\path\to\save\combined_document.pdf"
        ThisWorkbook.Sheets(shs).Select
        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=savePath
    End If
End Sub

応用例1の解説

この応用例では、ワークブック内のすべてのワークシートを走査して、特定のキーワードが含まれるシートだけをPDFで保存します。

応用例2:キーワードに基づいたファイル名で保存


Sub SaveWithKeywordFilename()
    Dim ws As Worksheet
    Dim keyword As String
    Dim savePath As String

    Set ws = ThisWorkbook.Worksheets("Sheet1")
    keyword = "特定キーワード"

    If InStr(1, ws.Cells.Value, keyword, vbTextCompare) Then
        savePath = "C:\path\to\save\" & keyword & "_document.pdf"
        ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=savePath
    End If
End Sub

応用例2の解説

この応用例では、指定したキーワードをファイル名の一部として使用して、特定のキーワードに基づいた名前でPDFとして保存します。

応用例3:キーワードリストを使用して複数のキーワードを検索


Sub SaveWithMultipleKeywords()
    Dim ws As Worksheet
    Dim keywords() As String
    Dim savePath As String
    Dim k As String

    Set ws = ThisWorkbook.Worksheets("Sheet1")
    keywords = Split("キーワード1,キーワード2,キーワード3", ",")

    For Each k In keywords
        If InStr(1, ws.Cells.Value, k, vbTextCompare) Then
            savePath = "C:\path\to\save\" & k & "_document.pdf"
            ws.ExportAsFixedFormat Type:=xlTypePDF, Filename:=savePath
        End If
    Next k
End Sub

応用例3の解説

この応用例では、キーワードのリストを使用して複数のキーワードを検索します。キーワードごとにワークシートをPDFで保存します。

まとめ

Excel VBAを使用することで、特定のキーワードを含むドキュメントをPDFとして簡単に自動保存することができます。基本的なコードから、複数のシートをPDFで保存する方法、キーワードに基づいたファイル名で保存する方法、キーワードリストを使用して複数のキーワードを検索する方法まで、さまざまな応用例を通じて、その実装方法を学ぶことができました。

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

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

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

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

コメント

コメントする

目次