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がおすすめです。
次回はワードをみつけた時の処理部分を作ります。