No.3ベストアンサー
- 回答日時:
>私自身VBAに詳しくなくお教えいただきたいです。
読み落としました
#2に書いた内容でアレンジは判り難かったかも・・With .Find 変だし・
参考にされているコードを見ながら サンプルを書いて見ました
メソッド・プロパティ、Findのリセットなど・・調べてみてください
Sub Example()
Dim csvFilePath As String
Dim strBuf As String
Dim tmp() As Variant
Dim n As Integer
Dim strKey As Variant
csvFilePath = "C:\Users\・・・・・\検索リスト.csv"
'検索キーの配列を作る
Open csvFilePath For Input As #1
Do Until EOF(1)
Line Input #1, strBuf
ReDim Preserve tmp(n)
tmp(n) = Split(strBuf, ",")(0)
n = n + 1
Loop
Close #1
Options.DefaultHighlightColorIndex = wdPink
'文章 検索・置換の設定をおこないます。
For Each strKey In tmp
With Selection.Find
.Format = True
.ClearFormatting
.Replacement.ClearFormatting
.Replacement.Highlight = True
.Text = strKey '検索ワードを代入します。
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.MatchCase = True
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchFuzzy = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next
'TextBoxを対象に処理
Dim shp As Shape
For Each shp In ActiveDocument.Shapes
If shp.Type = msoTextBox Then
Call setHighlight(shp, tmp)
End If
Next
End Sub
Public Sub setHighlight(shp As Shape, tmp As Variant)
Dim strKey As Variant
With shp.TextFrame.TextRange.Find
For Each strKey In tmp '複数キーでループ
.Text = strKey
.Replacement.Highlight = wdPink
.Execute Replace:=wdReplaceAll
Next
End With
End Sub
No.5
- 回答日時:
特定の言語が何語なのかわかりませんが。
例えば、Wordがステータスバーで[韓国語]と認識している文字を
対象にする場合なら、以下のマクロで可能です。
(言語指定のみなので、他ファイルを参照するようなものは不要)
' ********************* ここから ***********************
Dim strFind As String
Dim strReplace As String
Sub 言語指定で蛍光ペン()
'
' 本文とテキストボックスを対象にする場合
'
' テキストボックス用変数
Dim sp As Shape
' 置換対象のための変数
Dim rng As Range
' 検索する文字列
strFind = ""
' 置換後の文字列
strReplace = ""
' 本文領域の場合、置換する場所の変数は不要
Set rng = ActiveDocument.Range(Start:=0, End:=0)
' 置換するための設定
Call myFind(rng)
' テキストボックスの場合
For Each sp In ActiveDocument.Shapes
If sp.Type = msoTextBox Then
Set rng = sp.TextFrame.TextRange
Call myFind(rng)
End If
Next
' メッセージボックスが必要なら
MsgBox "完了しました。"
End Sub
Public Function myFind(rng As Range)
With rng.Find
.LanguageID = wdKorean
.Text = strFind
End With
With rng
Do While .Find.Execute = True
rng.HighlightColorIndex = wdPink
Loop
End With
End Function
' ********************* ここまで ***********************
No.4
- 回答日時:
#3のコードを見直しました
動くとは思うのですが・・
For Each strKey In tmp
With Selection.Find
の部分が気になっています
参考サイトのキーワードループが腑に落ちず(私的に)
tmp(n) = Split(strBuf, ",")(0)
として (CSV抽出ループ内で処理を繰り返さない為)
先に検索キーワードを配列に入れCSVを閉じ使う事にしたのに
配列を使用する時に同じことを行ってしまいましたので
どちらでも良いかもですが確認訂正してください・・
文章部分の処理
'文章 検索・置換の設定をおこないます。
With Selection.Find
For Each strKey In tmp
.Format = True
.ClearFormatting
.Replacement.ClearFormatting
.Replacement.Highlight = True
.Text = strKey '検索ワードを代入します。
.Forward = True
.Wrap = wdFindContinue
.MatchCase = True
.Execute Replace:=wdReplaceAll
Next
End With
デフォルトパラメータは削除してしまいましたが
問題が生じる場合は加えてください
No.2
- 回答日時:
>テキストボックス内の文字に対して、特定の言語の検索と検索結果に該当する文字にマーカーを引くVBA
文章中・・・はすでにあり理解されているものと存じますので
テキストボックス内の文字列 を対象にするサンプルです
一例ではActiveDocument.Shapes(1) が 対象のテキストボックスとして
最低限の実行コードですので
ActiveDocument.Shapes(i) に対して .Type = msoTextBox などで分岐するか、オブジェクト名を明示して実行して下さい
また、複数文字列や複数Highlightの場合 引数付きのSubルーチンにした方が良いかも知れませんね
Public Sub Sample()
Options.DefaultHighlightColorIndex = wdPink
With ActiveDocument.Shapes(1) 'Shapeオブジェクト指定(TextBox仮定)
With .TextFrame.TextRange
With .Find
.Text = "対象文字"
.Replacement.Highlight = wdPink
.Execute Replace:=wdReplaceAll
End With
End With
End With
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- Visual Basic(VBA) vba 15 2023/04/07 12:33
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- UNIX・Linux bashスクリプトのgrepで3XXの検索の仕方について 2 2022/09/06 21:35
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Excel(エクセル) Excelでの検索結果を含む行だけを表示させたい 5 2023/03/10 17:08
- Excel(エクセル) Excelについて質問です。 シート1の検索値例えば *ABC* をシート2.3.4から検索して、シ 5 2023/02/17 23:30
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- Word(ワード) 正の文字 4 2022/08/23 16:06
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
「覚え間違い」を教えてください!
私はかなり長いこと「大団円」ということばを、たくさんの団員が祝ってくれるイメージで「大円団」だと間違えて覚えていました。
-
ちょっと先の未来クイズ第5問
日本漢字能力検定協会が主催し、12月12日に発表される、2024年の「今年の漢字」に選ばれる漢字一文字は何でしょう?
-
タイムマシーンがあったら、過去と未来どちらに行く?
20XX年、ついにタイムマシーンが開発されました。 あなたは過去に行く? それとも未来? タイムマシーンにのって、どこに行って、何をしたいか教えてください!
-
word2007の1ファイル内で複数の単語を検索
その他(Microsoft Office)
-
WORDで複数語句を検索するには
Word(ワード)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/6】 西暦2100年、小学生のなりたい職業ランキング
- ・ちょっと先の未来クイズ第5問
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
googlemapで複数条件絞り込みで...
-
デジタル時計の時刻合わせの方...
-
マイページはどこを開くの
-
エクセルのシート上に別のシー...
-
リストビューをスクロールさせ...
-
スクリプトって、何ですか?ど...
-
「Cancel = True」とはどういう...
-
小さな表示窓の呼び方は
-
VBの画面で、全ウィンドウを一...
-
一定時間おきにアラームやポッ...
-
VBA ポップアップが表示された...
-
VB2005 DataGridView上でクリッ...
-
上下キーを押すと、ページスク...
-
Excelでワードアートや図を常に...
-
ツールバーやステータスバーな...
-
リトルバスターズEXを中古で購...
-
Javascript_submit()完了後に処...
-
エクセルVBAでフォームのListbo...
-
ウインドウを毎回同じ位置、大...
-
中国国際航空(http://www.airc...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Yahoo地図でマーカーを表示した...
-
VBAでオブジェクトがありません...
-
googlemapで複数条件絞り込みで...
-
WordのVBAについて
-
郵便番号で検索⇒距離順に結果リ...
-
どうして+3
-
【javascript】住所から郵便番...
-
spanの位置、サイズを取得したい
-
Google マップにマーカーと同心...
-
GoogleMapお店の情報をJSONで取...
-
onMouseOver、onMouseOutイベン...
-
google map apiを使って自宅周...
-
ホームページビルダー16 地図...
-
GoogleMaps、Ajaxについて
-
JavaScriptでGoogleMAPの表示を...
-
google mapに複数マーカーを設...
-
「このウェブサイトには別の go...
-
GoogleMap クリックで情報ウィ...
-
GoogleMapsでルート内の座標を...
-
Google Maps APIのfitBounds
おすすめ情報
現状使用可能な文章中にマーカーを引くマクロがこちらです。
(エク短様http://extan.jp/?p=5569のVBAを参考にしています。)
Sub 複数の文字列を検索しハイライト表示する()
Dim csvFilePass
Dim strBuf As String
Dim tmp As Variant
csvFilePass = "\\~~~~~~~~~~~~~~"
Open csvFilePass For Input As #1
Do Until EOF(1)
Line Input #1, strBuf
tmp = Split(strBuf, ",")
Options.DefaultHighlightColorIndex = wdPink '蛍光ペン色:ピンク
(次補足に続きます。)
With Selection.Find
【各種検索条件設定は文字数過多のため省略。】
End With
Selection.Find.Execute Replace:=wdReplaceAll
Loop
Close #1
MsgBox "完了しました。"
End Sub
以上です。