【パワポ検索ツールを作る3】Find関数〜


Find関数概要

 前回はプレゼンテーション、スライド、シェイプを全て見ていく3次元ループ、つまりワード検索の為の仕組みを作りました(前回の記事)。今回はワードを検索する為のFind関数を下記資料で解説します。

コード

 標準モジュールに下記コードを記載します。

'VBA標準モジュール
Option Explicit

Sub findTest(txt As String)
    Dim prs As Presentation  'プレゼンテーション
    Dim sld As Slide    'スライド
    Dim shp As Shape    'シェイプ
    Dim txtRng As TextRange  'テキストレンジ
    Dim foundtext As TextRange  '文字発見用テキストレンジ
    
    For Each prs In Presentations  '全プレゼンテーションをループ
        For Each sld In prs.Slides  '全スライドをループ
            For Each shp In sld.Shapes  '全図形をループ
                Set txtRng = shp.TextFrame.TextRange
                Set foundtext = txtRng.Find(txt, msoFalse, msoFalse)
                
                If Not (foundtext Is Nothing) Then  'テキストレンジが空白ではない場合
                    MsgBox "みつけたよ!!"
                    Exit Sub  'Find関数から抜ける
                End If
            Next
        Next
    Next
    MsgBox "ごめんなさい、みつけられませんでした。"
End Sub

 ユーザーフォームに下記コードを記載します。

'VBAユーザーフォーム
Option Explicit

Private Sub cB_search_Click()
    Call findTest(tB_search.Text)
End Sub

 新しいプレゼンテーションにテキストボックスを1つ作り、そこに適当な文字を入力してユーザーフォームを実行し動作確認してみましょう。ワードを見つけると「みつけたよ。」、そうでなければ「ごめんなさい、みつけられませんでした。」とメッセージが出たと思います。
 業務で使用する場合、造語や品番など辞書にない言葉を使う場合があります。そんな時は完全一致にしてしまうと検索してもヒットしなくなってしまうので、第4引数のWholeWordsはmsofalseがおすすめです。
 次回はワードをみつけた時の処理部分を作ります。


コメントを残す