Word VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2 / 308 ツリー ←次へ | 前へ→

【903】Wordで塗りつぶしされ文字だけ検索したい。 M 24/7/28(日) 14:29 質問[未読]
【904】Re:Wordで塗りつぶしされ文字だけ検索したい。 マナ 24/7/28(日) 19:39 発言[未読]
【905】Re:Wordで塗りつぶしされ文字だけ検索したい。 M 24/7/30(火) 22:52 発言[未読]
【906】Re:Wordで塗りつぶしされ文字だけ検索したい。 マナ 24/7/31(水) 9:20 発言[未読]
【907】Re:Wordで塗りつぶしされ文字だけ検索したい。 M 24/8/3(土) 23:25 回答[未読]
【908】Re:Wordで塗りつぶしされ文字だけ検索したい。 マナ 24/8/4(日) 8:46 発言[未読]

【903】Wordで塗りつぶしされ文字だけ検索したい。
質問  M E-MAIL  - 24/7/28(日) 14:29 -

引用なし
パスワード
   Wordで特定の色で塗りつぶしをされた文字だけを検索して、
該当箇所をすべて選択したいです。

chatGPTに聞いた下記のコードでは、エラーメッセージが出て検索できませんでした。
どこが違うのか、ご教授いただけますと幸いです。


Sub FindShadedText()
  Dim searchColor As Long
  Dim rng As Range
  Dim found As Boolean
  
  ' 検索する塗りつぶし色を設定(RGB値)
  searchColor = RGB(255, 255, 0) ' 黄色の例

  ' ドキュメントの全範囲を設定
  Set rng = ActiveDocument.Content
  
  ' 範囲の最初に移動
  rng.Collapse Direction:=wdCollapseStart
  
  ' 塗りつぶし色を検索
  found = False
  Do While rng.Find.Execute(FindText:="", Format:=True)
    If rng.Shading.BackgroundPatternColor = searchColor Then
      rng.Select
      found = True
      Exit Do
    End If
    rng.Collapse Direction:=wdCollapseEnd
  Loop
  
  If Not found Then
    MsgBox "指定された塗りつぶし色のテキストが見つかりませんでした。"
  End If
End Sub

【904】Re:Wordで塗りつぶしされ文字だけ検索した...
発言  マナ  - 24/7/28(日) 19:39 -

引用なし
パスワード
   ▼M さん:
>Wordで特定の色で塗りつぶしをされた文字だけを検索して、
>該当箇所をすべて選択したいです。
>
選択したあと、どのような操作を考えていますか。
同時に全選択された状態である必要がありますか。

【905】Re:Wordで塗りつぶしされ文字だけ検索した...
発言  M E-MAIL  - 24/7/30(火) 22:52 -

引用なし
パスワード
   ▼マナ さん:
>▼M さん:
>選択したあと、どのような操作を考えていますか。
>同時に全選択された状態である必要がありますか。

ご返信ありがとうございます。
該当箇所だけを抜き出したいので、全選択でコピーしたいのです。

【906】Re:Wordで塗りつぶしされ文字だけ検索した...
発言  マナ  - 24/7/31(水) 9:20 -

引用なし
パスワード
   ▼M さん:


塗りつぶしが黄色の蛍光ペンだとして

Sub test()
  Dim dic As Object
  Dim r As Range

  Set dic = CreateObject("scripting.dictionary")
  Set r = ActiveDocument.Content

  With r.Find
    .Highlight = True
    Do While .Execute
      Do While r.HighlightColorIndex = wdUndefined
        r.MoveEnd Unit:=wdCharacter, Count:=-1
      Loop
      If r.HighlightColorIndex = wdYellow Then
        dic(dic.Count) = r.Text
      End If
    Loop
  End With
  
  If dic.Count > 0 Then
    Documents.Add.Range.Text _
      = "検索結果:" & vbCr & Join(dic.items, vbCr)
  End If

End Sub

【907】Re:Wordで塗りつぶしされ文字だけ検索した...
回答  M E-MAIL  - 24/8/3(土) 23:25 -

引用なし
パスワード
   ▼マナ さん:
>▼M さん:

ご返信が遅くなり申し訳ございません。
うまく動きました!

うまく動きましたが、私が検索したいのは蛍光ペンではなく、
塗りつぶしされた箇所なのですが、その場合はどのようなコードになりますでしょうか?

ご教授いただけると幸いです。

【908】Re:Wordで塗りつぶしされ文字だけ検索した...
発言  マナ  - 24/8/4(日) 8:46 -

引用なし
パスワード
   ▼M さん:

Sub test2()
  Dim dic As Object
  Dim r As Range

  Set dic = CreateObject("scripting.dictionary")
  Set r = ActiveDocument.Content

  With r.Find
    .Font.Shading.BackgroundPatternColor = wdColorYellow
    Do While .Execute
      dic(dic.Count) = r.Text
    Loop
  End With
 
  If dic.Count > 0 Then
    Documents.Add.Range.Text _
      = "検索結果:" & vbCr & Join(dic.items, vbCr)
  End If

End Sub

2 / 308 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
207156
(SS)C-BOARD v3.8 is Free