
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Yahoo地図でマーカーを表示した...
-
VBAでオブジェクトがありません...
-
onMouseOver、onMouseOutイベン...
-
【javascript】住所から郵便番...
-
デジタル時計の時刻合わせの方...
-
Edge Chrom などの超初心者質問...
-
エクセルのシート上に別のシー...
-
別フォームから戻ったときのイ...
-
一定時間おきにアラームやポッ...
-
TikTokLiteの自動スクロールの...
-
Javascript_submit()完了後に処...
-
Youtubeのバグ
-
Outlookのエラー表示について
-
タスクバーと〔スタート〕メニ...
-
PDFファイルの向きを縦から横に...
-
ウィンドウの2重起動を防止したい
-
スクリプトって、何ですか?ど...
-
マイページはどこを開くの
-
Outlookでこのような表示がされ...
-
同じページをブラウザで複数開...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Yahoo地図でマーカーを表示した...
-
VBAでオブジェクトがありません...
-
Google マップにマーカーと同心...
-
WordのVBAについて
-
google map の画面サイズを小さ...
-
郵便番号で検索⇒距離順に結果リ...
-
Yahoo地図で郵便番号からおおよ...
-
GoogleMapAPIで複数のマーカー...
-
ホームページをあたらしいアド...
-
ホワイトボードに水性顔料マー...
-
Rでの散布図の要素をマーカーで...
-
javaScript(canvas)で図形(イラ...
-
リンク先がgoogleなどの場合
-
JavaScriptでGoogleMAPの表示を...
-
Google Map埋め込みでマーカー...
-
Google Mapでマーカーにパラメ...
-
google map apiを使って自宅周...
-
onMouseOver、onMouseOutイベン...
-
【javascript】住所から郵便番...
-
GoogleMapAPIv3でルート上の座...
おすすめ情報
現状使用可能な文章中にマーカーを引くマクロがこちらです。
(エク短様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
以上です。