質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

Q&A

解決済

3回答

1475閲覧

Word VBA カーソルの位置から後の全ての塗りつぶしの色を置き換えたい

addresshopeph

総合スコア5

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Word

Microsoft WordはMicrosoftが開発した業務用の文書生成用のソフトウェアです。

0グッド

0クリップ

投稿2020/09/09 07:08

カーソルの位置から後の全ての塗りつぶしの色を置き換えたいのですが、うまく動作しませんでした。
.Font.Shading.BackgroundPatternColor = -721354906
.Font.Shading.BackgroundPatternColor = -553582746
は、マクロの記録を使用して調べた値です。
Word VBA初心者です。ご教授のほどよろしくお願いします。

Sub replaceText()

With Selection.Find
.Font.Shading.BackgroundPatternColor = -721354906
With .Replacement
.Font.Shading.BackgroundPatternColor = -553582746
End With
.Execute Replace:=wdReplaceAll
End With

End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

以下のコードでいかがでしょうか。
一度、別の条件で検索をすると、検索の履歴がデフォルトとして残る場合がありますので、
文書を閉じて、再び開いてから実行してみてください。
私の手元ではうまく行ってます。

VBA

1Sub replaceText() 2 Dim blnExecute As Boolean 3 4 Do 5 With Selection.Find 6 .Font.Shading.BackgroundPatternColor = -721354906 7 blnExecute = .Execute 8 End With 9 With Selection 10 .Font.Shading.BackgroundPatternColor = -553582746 11 .Collapse Direction:=wdCollapseEnd 12 End With 13 Loop Until blnExecute = False 14 15End Sub

投稿2020/09/09 10:06

kitasue

総合スコア314

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

addresshopeph

2020/09/09 11:08

前回はいろいろとありがとうございました。 度重なるご教授感謝します。 教えていただいたコードでもうまく動作しました。 どうもありがとうございます。
guest

0

ちょっと調べて書いてみました。
背景色の場合は文字色とは別の手段になるようです。
以下の例では色は定義値の赤と青を使っていますので、適宜置き換えてください。
提示いただいた値か、前回のように「その他の色」から値を引っ張ってきてください。
あと実行前に置換範囲を選択しておいてください。

VBA

1Sub replaceText() 2 3 With Selection.Find 4 .Font.Shading.BackgroundPatternColor = wdColorRed 5 While .Execute 6 Selection.Font.Shading.BackgroundPatternColor = wdColorBlue 7 'Selection.Font.Color = wdColorBlack ' 指定しないと自動で白になる 8 Selection.Collapse wdCollapseEnd 9 Wend 10 11 End With 12 13End Sub 14

ちなみにここのページを参考にしました。

投稿2020/09/09 07:49

ttyp03

総合スコア16996

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

addresshopeph

2020/09/09 08:17

次のように置き換えて実行しましたが、うまく動作しませんでした。 Sub replace() With Selection.Find .Font.Shading.BackgroundPatternColor = -721354906 While .Execute Selection.Font.Shading.BackgroundPatternColor = -553582746 Selection.Font.Color = wdColorBlack Selection.Collapse wdCollapseEnd Wend End With End Sub 置換範囲を選択せずに、文書全体(カーソルから後の部分)を全て置換するにはどうすればいいでしょうか。 ご教授のほどよろしくお願いします。
ttyp03

2020/09/09 09:12

色の値を前回同様RGBを使ってみてはどうでしょうか。 文書全体についてはSelectionをActiveDocument.Rangeに置き換えればよいかと。 今手元に実行できる環境がないので、もし間違ってたらすみません。
addresshopeph

2020/09/09 11:04

どこがおかしかったのかわかりませんが、次のコードで何回かやっているうちにうまく動作しました。 どうもありがとうございます。 Sub replace() With Selection.Find .Font.Shading.BackgroundPatternColor = -721354906 While .Execute Selection.Font.Shading.BackgroundPatternColor = -553582746 Selection.Font.Color = wdColorBlack Selection.Collapse wdCollapseEnd Wend End With End Sub
guest

0

これではどうでしょうか。

VBA

1Sub replaceText() 2 doc_Sta = Selection.Range.Start 3 doc_end = ActiveDocument.Bookmarks("\EndOfDoc").End 4 ActiveDocument.Range(doc_Sta, doc_end).Select 5 Selection.Font.Shading.BackgroundPatternColor = -553582746 6End Sub

投稿2020/09/09 08:33

tosi

総合スコア553

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

addresshopeph

2020/09/09 08:47

どうもありがとうございます。 カーソルから後の部分の全てを置換するようにするにはどうすればいいでしょうか。
addresshopeph

2020/09/09 11:05

問題が解決しました。 どうもありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問