システムwiki

選択範囲内のテキストの色を変更する

Vlad6 解決済 最終更新日:2022-06-26 04:55

指定された色RGB(0、100、150)のテキストを検索し、その色をRGB(0、0、150)に置き換えるスクリプトを作成しようとしました.

以下に添付されているサンプルファイルでは、2番目または3番目の段落を選択してスクリプトを実行すると、スクリプトによって、選択したテキストだけでなく、その上のテキストの色も変更されます.

選択範囲内にあるテキストのみの色を変更するために使用できるスクリプトを知っている人はいますか?

https://docs.google.com/document/d/1lbRAIu0_MFct5_5PNaunIvnYJZsimRuq/edit?usp=sharing&ouid=118017619445260586397&rtpof=true&sd=true

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)

1 #
Charles 2

お待ちいただいてありがとうございます.私たちは皆学ぶことができます.
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
ウェンド
で終わる
サブの終了

6 #
Charles

私の側では無知かもしれませんが、同じ形式であっても、GoogleドキュメントのドキュメントはWordドキュメントではありません.さらに、DropBoxとonedriveコンピューターにダウンロードして、コンピューターApplicationで開くことができます.

応答6# ->にスキップ
4 #
Vlad6

内容は同じであるため、ファイルがどこにアップロードされているかは関係ありません.

google Drive/Docsにアップロードされたファイルをダウンロードするには、ファイル>ダウンロード:に移動する必要があります.

9 #
Charles 2

こんにちは、
試す:
.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

ウェンド

応答3# ->にスキップ
2 #
Vlad6

ありがとうございました.これで、スクリプトは意図したとおりに機能します.そして、私はあなたからいくつかの有用なことを学びました.

応答9# ->にスキップ
8 #
Vlad6

ありがとうございました.はい、Dropboxも使用できますが、Dropboxサービスとの使用に違いがないため、デフォルトで常にgoogleDriveを使用しています.