選択範囲内のテキストの色を変更する
指定された色RGB(0、100、150)のテキストを検索し、その色をRGB(0、0、150)に置き換えるスクリプトを作成しようとしました.
以下に添付されているサンプルファイルでは、2番目または3番目の段落を選択してスクリプトを実行すると、スクリプトによって、選択したテキストだけでなく、その上のテキストの色も変更されます.
選択範囲内にあるテキストのみの色を変更するために使用できるスクリプトを知っている人はいますか?
Selection.Find.ClearFormatting
Selection.Find.Font.Color= RGB(0、100、150)
Selection.Find.Replacement.ClearFormatting
Selection.Find.Replacement.Font.Color= RGB(0、0、150)
Selection.Findで
.Text= ""
.Replacement.Text= ""
.Forward= False
.Wrap= False
.Format= True
.MatchCase= False
.MatchWholeWord= False
.MatchWildcards= False
.MatchSoundsLike= False
.MatchAllWordForms= False
で終わる
Selection.Find.Execute Replace:= wdReplaceAll
サブの終了
返信リスト(回答:9)
お待ちいただいてありがとうございます.私たちは皆学ぶことができます.
JayFreedmanが必要なマクロを提供してくれたと思います.彼の最新の修正では、次のようになります.
Sub x()
'ジェイフリードマン
'
選択範囲内のテキストの色を変更する
'
Dim rg As range
rg=Selection.rangeを設定します
rg.Collapse wdCollapseStart
rg.Findを使用
.Text= ""
.Replacement.Text= ""
.Forward= True
.Wrap= wdFindStop
.Format= True
.Font.Color= RGB(0、100、150)
.Replacement.Font.Color= RGB(0、0、150)
'以下はすべてデフォルトであるため、省略できます
'
.MatchCase= False
'
.MatchWholeWord= False
'
.MatchWildcards= False
'
.MatchSoundsLike= False
'
.MatchAllWordForms= False
rg.InRange(Selection.range)中
.Execute Replace:= wdReplaceOne
見つからない場合は、Subを終了します
rg.Collapse wdCollapseEnd
ウェンド
で終わる
サブの終了
私の側では無知かもしれませんが、同じ形式であっても、GoogleドキュメントのドキュメントはWordドキュメントではありません.さらに、DropBoxとonedrive
コンピューターにダウンロードして、コンピューターApplicationで開くことができます.
応答6# ->にスキップ4 #Vlad6内容は同じであるため、ファイルがどこにアップロードされているかは関係ありません.
google Drive/Docsにアップロードされたファイルをダウンロードするには、ファイル>ダウンロード:に移動する必要があります.
こんにちは、
試す:
.wrap= wdFindStop
必要に応じて、問題のあるサンプルドキュメントをonedrive
またはDropboxに保存し、ここにビューリンクを貼り付けます.機密情報や専有情報を含めることはできません.
RandまたはLoremAutoCorrect関数を使用して、サンプルドキュメントのダミーテキストを作成できます.新しい行に=Rand(4,5)と入力し、Enterキーを押すと、それぞれ5文のMicrosoftヘルプテキストを含む4つの段落が生成されます.Lorem(4,5)と入力してEnterキーを押すと、4段落の疑似ラテン語テキストが生成されます.
これは、機密情報を共有せずにそのようなドキュメントを投稿する理由と方法に関する私の記事です.私や他の人があなたを助けることができます.
トラブルシューティングにサンプルファイルが重要な理由.どうやってするの.
この情報がお役に立てば幸いです.
この投稿に返信することで、さらにサポートを求めることができます(下の[返信]ボタン).
健康を維持する
応答9# ->にスキップ7 #JayFree 1このタスクは、で説明したタスクと似ています 選択したテキストでのみスクリプトを実行する 、ここで、Replaceは選択したテキストの外側で変更を加えました.ただし、このマクロにはいくつかの追加の問題があります.
主な変更は、同じ種類のRangeオブジェクトを使用し、見つかった各テキストをチェックして、元の選択範囲内にあることを確認することです..WrapはwdFindContinueではなくwdFindStopである必要がありますが、検索を選択範囲に限定するにはそれだけでは不十分です.また、変更されるテキストは選択後ではなく前にあります.これは、.ForwardがFalse(ドキュメントの先頭に向かって検索)ではなくTrue(ドキュメントの末尾に向かって検索)である必要があるためです.
これは必要なコードです:
サブx()
Dim rg As Range
rg= Selection.Rangeを設定します
rg.Collapse wdCollapseStart
rg.Findを使用
.Text= ""
.Replacement.Text= ""
.Forward= True
.Wrap= wdFindStop
.Format= True
.Font.Color= RGB(0、100、150)
.Replacement.Font.Color= RGB(0、0、150)
'以下はすべてデフォルトであるため、省略できます
' .MatchCase= False
' .MatchWholeWord= False
' .MatchWildcards= False
' .MatchSoundsLike= False
' .MatchAllWordForms= False
rg.InRange(Selection.Range)
.Execute Replace:= wdReplaceOne
rg.Collapse wdCollapseEnd
ウェンド
で終わる
サブの終了
元のコードは、最初にレコーダーによって作成され、その後わずかに変更されたマクロの特徴を示しています.記録されたマクロはVBAでプログラミングする方法についてのヒントを与えることができますが、以下で説明する理由により、通常は最終的なマクロのコーディングを最初から開始するのが最善です. https://Wordmvp.com/FAQs/MacrosVBA/ModifyRecordedMacro.htm .
応答7# ->にスキップ5 #Vlad6ありがとうございました.はい、VBスクリプトレコーダーで色置換アクションを記録してから、少し変更しました.あなたの記事は、録音プロセス中に不要なパラメータが保存されることを説明しているので、役に立ちます.
以下に添付されているサンプルファイルのテキストでスクリプトを実行すると、プログラムがフリーズし、[プロセスの終了]をクリックして閉じる必要があります.これの原因は何でしょうか?
https://www.dropbox.com/scl/fi/pppw89mfn5eeln5bk30fd/temp.docx?dl=0&rlkey=rwxttxiyjyv7ho4f15d8w0abi
応答5# ->にスキップ3 #JayFree 1おっと、それについては申し訳ありません.太字で示されている行を追加します:
rg.InRange(Selection.Range)
.Replace:=wdReplaceOneを実行
見つからない場合はサブを終了
rg.Collapse wdCollapseEnd
ウェンド
応答9# ->にスキップ8 #Vlad6ありがとうございました.はい、Dropboxも使用できますが、Dropboxサービスとの使用に違いがないため、デフォルトで常にgoogleDriveを使用しています.