【必読】パワポ本15選 👉

【パワポVBA】Excelに入力した文字列でパワポ内を検索するマクロ

通常、PowerPointでは1度の検索につき1つの文字列しか検索できません。

そこで、PowerPoint VBAとExcelを連携し、複数の文字列を同時に検索できるマクロを作りました。

Excelを更新するだけで検索ワードの変更ができるので便利です。

スポンサーリンク
スポンサーリンク

Excelに入力した文字列でパワポ内を検索するマクロ

コード

Sub SearchTextBox()

    'Excelオブジェクトの宣言
    Dim xlApp As Object
    Dim xlBook As Object
    Dim xlSheet As Object

    'PowerPointオブジェクトの宣言
    Dim ppt As Presentation
    Dim sld As Slide
    Dim shp As Shape

    'その他の変数の宣言
    Dim i As Integer
    Dim strSearch As String

    'Excelファイルを開く
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Open("C:\Users\ユーザー名\Desktop\searchword.xlsm") 'ここにExcelファイルのパスを入力してください
    Set xlSheet = xlBook.Worksheets(1)

    'PowerPointプレゼンテーションを設定
    Set ppt = ActivePresentation

    'すべてのスライドをループ
    For Each sld In ppt.Slides
        'すべてのシェイプをループ
        For Each shp In sld.Shapes
            'テキストボックスの場合
            If shp.HasTextFrame Then
                'すべての行をループ
                For i = 1 To xlSheet.Cells(xlSheet.Rows.Count, 1).End(-4162).Row
                    'Excelファイルの検索文字列を取得
                    strSearch = xlSheet.Cells(i, 1).Value
                    'テキストボックスのテキストに検索文字列が含まれているか確認
                    If InStr(shp.TextFrame.TextRange.Text, strSearch) > 0 Then
                        'メッセージボックスで通知
                        MsgBox "Found '" & strSearch & "' in slide " & sld.SlideIndex
                    End If
                Next i
            End If
        Next shp
    Next sld

    'Excelファイルを閉じる
    xlBook.Close
    Set xlSheet = Nothing
    Set xlBook = Nothing
    xlApp.Quit
    Set xlApp = Nothing
    
End Sub

「Set xlBook = xlApp.Workbooks.Open(“C:\Users\ユーザー名\Desktop\searchword.xlsm”) 」には、次で作成するExcelファイルまでのパスを入力してください。

Excelファイルの作成

検索ワードを入力したExcelファイルを作成します。

A列の1行目から順に検索したい文字列を入力しましょう。作例の場合、「aaa」「bbb」「ccc」の3つの文字列を検索します。

ファイル名を「searchword」とし、デスクトップに保存して準備完了です。

実行結果

検索したいPowerPointファイルを開き、マクロを実行します。作例の場合、スライド1に「aaa」、スライド2に「bbb」、スライド3に「ccc」と入力したテキストボックスを配置しています。

テキストボックス内の文字列と検索ワードが一致すると、上記のようにスライド番号と共にメッセージボックスで通知してくれます。