wordマクロで条件に合う文のみフォントサイズ変更

このQ&Aのポイント
  • wordの文章で、(注)から始まる文章を9ptに変更するマクロを作成したいと思っています。
  • 現行では”ああああ”しか9ptになりませんが、全ての(注)から始まる文章を9ptに変更したいです。
  • どなたかご教授いただけないでしょうか。
回答を見る
  • ベストアンサー

wordマクロで条件に合う文のみフォントサイズ変更

wordの文章で、“(注)”もしくは“(注)”という文字列を検索して次に現れる空白改行までの文章を9ptにし変えた部分にマーカーをしたいと思っています。 (注)から始まる文章は (注)あああああ。 (注)ああああ。いいいいい。 (注)ああああ。   (1)いいいいい。     (1)ううううう。     (2)えええええ。 等のパターンがあります。現行では”ああああ”しか9ptになりませんが本当は全て9ptにしたいと思っています。どなたがご教授願います。 Sub SizeChenge9() Dim Rng As Range For Each Rng In ActiveDocument.StoryRanges With Rng.Find .Text = "[\((][注][\))]" .MatchWildcards = True Do While .Execute(Forward:=True) If Rng.Information(wdWithInTable) = False Then With Rng .EndOf Unit:=wdSentence, Extend:=wdExtend .Font.Size = 9 .HighlightColorIndex = wdPink .Collapse wdCollapseEnd End With End If Loop End With Next Rng End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 結局、元のマクロは全面的に書き換えることにしました。いくらやっても、認識しない部分があったからです。パラグラフの先頭に、番号等が入れてあることが条件ですから、そうでない場合は、うまく行きません。 一応、マル付き数字は、検索値には入れていますが、おそらくは生きていません。それは、段落番号であって、段落番号として認識したら、色付けされます。元のご質問のコードとは、考え方が違いますから、もしかしたら、思い違いがあるかもしれません。そうしたら、マクロはうまく行きません。 このマクロの考え方は、パラグラフの先頭に、段落番号を探しエラーが発生したら、その先頭文字を探し、その段落数字のパラグラフをマーカーとフォントを変換する。また、エラーが発生しなかったら、そのパラグラフ全体を変換します。 '------------------------------------------- Sub ChagNumberFont()   Dim p As Paragraph   Dim i As Long   On Error Resume Next   With ActiveDocument.Content     For Each p In .Paragraphs       p.SelectNumber       If Err.Number = 0 Then         With p.Range           .EndOf Unit:=wdParagraph, Extend:=wdExtend           .HighlightColorIndex = wdPink           .Font.Size = 9         End With       Else         If CheckParagraph(Selection.Range, i) Then           If i = 0 Then             p.Range.Font.Size = 9             p.Range.HighlightColorIndex = wdPink           Else             With Selection              .HomeKey Unit:=wdLine              .MoveRight Unit:=wdCharacter, Count:=i, Extend:=wdMove              .MoveEnd Unit:=wdLine, Count:=1              .Range.Font.Size = 9              .Range.HighlightColorIndex = wdPink              .Collapse Direction:=wdCollapseEnd             End With           End If           i = 0         End If       End If       Err.Clear     Next   End With   On Error GoTo 0 End Sub Function CheckParagraph(ByRef rng As Range, ByRef i As Long) Dim Ar As Variant Dim strTxt As String Dim s As Variant Dim flg As Boolean Dim ln As Long   flg = False   '(1)(2)は、[マル1,マル2] です。自動変換されています。   Ar = Array("[((]?[))]*", "[(1)(2)]", "[2-4]", "・")   ln = Len(rng.Text)   strTxt = Replace(rng.Text, Space(1), "", , , 1)   i = ln - Len(strTxt)   For Each s In Ar    If strTxt Like s & "*" Then     If Not Mid(strTxt, 2) Like "*" & s & "*" Then       flg = True       Exit For     End If    End If   Next   CheckParagraph = flg End Function

ybsteed
質問者

補足

ありがとうございます。 月初でバタついてしまい遅くなって申し訳ありませんでした。 Sub ChagNumberFont() Dim p As Paragraph Dim i As Long On Error Resume Next With ActiveDocument.Content For Each p In .Paragraphs p.SelectNumber If Err.Number = 0 Then With p.Range .EndOf Unit:=wdParagraph, Extend:=wdExtend .HighlightColorIndex = wdPink .Font.Size = 9 End With Else ★ If CheckParagraph(Selection.Range, i) Then If p.Range.Information(wdWithInTable) = False Then If i = 0 Then p.Range.Font.Size = 9 p.Range.HighlightColorIndex = wdPink Else With Selection .HomeKey Unit:=wdLine .MoveRight Unit:=wdCharacter, Count:=i, Extend:=wdMove .MoveEnd Unit:=wdLine, Count:=1 .Range.Font.Size = 9 .Range.HighlightColorIndex = wdPink .Collapse Direction:=wdCollapseEnd End With End If i = 0 End If End If End If Err.Clear Next End With On Error GoTo 0 End Sub に関しては★を付け加えました。 Function CheckParagraph(ByRef rng As Range, ByRef i As Long) Dim Ar As Variant Dim strTxt As String Dim s As Variant Dim flg As Boolean Dim ln As Long   flg = False   '(1)(2)は、[マル1,マル2] です。自動変換されています。   Ar = Array("[((]?[))]*", "[(1)(2)]", "[2-4]", "・")   ln = Len(rng.Text)   strTxt = Replace(rng.Text, Space(1), "", , , 1)   i = ln - Len(strTxt)   For Each s In Ar    If strTxt Like s & "*" Then     If Not Mid(strTxt, 2) Like "*" & s & "*" Then       flg = True       Exit For     End If    End If   Next   CheckParagraph = flg End Function に関してですが初心者の私には難解で解読中です。 このまま動かすと (注)あああ。 (注)あああ。 (注)あああ。 と3つ並んでいる所は一番下しかかかりません。 あと、(イ)(ロ)(2)(3)のかかって欲しくない所にもかかります。 (イ)(ロ)など「~以外」とする事は可能なのでしょうか? ちなみにAr = Array("[((]?[))]*", "[(1)(2)]", "[2-4]", "・") の?に「注」を入れたら(1)(2)←カッコ1、2がかからなくなりました。

その他の回答 (5)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.6

こんばんは。 返事が遅くなりました。もう先週に回答を書いておきながら、そのままになってしまいました。 残念ながら、#4のマクロでダメでしたら、そのままの文書ですと無理だと思います。一旦、別のソフト--たとえば、Excelのように、本来の文字のベタ(入力した文字と見えている状態が一致してる)入力に上乗せする書式のようなものでないと出来ないのです。 Wordでは、一部は直せることは出来ても、もう片方がだめになるということになってしまいます。結局のところは、それほど変わらないと思います。完全には出来ません。今回の対象の文書は、大きくわけると、Wordの機能で書かれた部分と、ベタ書きになっているものとが混合された文書ではないかと思うからです。#4のコードがダメだった理由です。 #4 で全面的に換えたのは、本来、Wordの機能を使って段落の先頭に付けたWordの機能で付けられた番号(段落番号)に対して変更するように想定しています。意図しないところで、色が付けられた理由です。 きちんとした規則によって変更するように出来ていますが、システムから付けられた段落番号自体の内容は判定は出来ないのです。ベタ書きなら、仮にフィールド状態でも条件によって可能ですが、この段落番号の場合は区分けができません。 段落番号を使わないというような条件下なら、もう一度、マクロを書くことは可能ですが、Wordの機能を使わないで本当のベタ書きで文書を作るというのは、なかなか無理ではないかと思います。マクロはあくまでも補助的な立場ですから、そのための文章を書き直すことはナンセンスです。 段落番号は、すべて変換するか、しないか、どちらかひとつです。 また、たとえば、以下のようなところで、誤動作する場合は、確実にパラグラフとして分かれていないようです。別の回答でも、私のWordのコードに関してクレームを付けた方がいましたが、単に日本語の「段落」という言葉でまとめてしまうと誤解されてしまいます。あくまでも、[Return]コードで分かれている部分に対して行うもので、それを、こちらからは、その内容について万能なコードで、パラグラフになっているのか、そうでないのかの区分けに同じように働くように書くことは出来ないからです。 >(注)あああ。 >(注)あああ。 >(注)あああ。 >と3つ並んでいる所は一番下しかかかりません。 上の二つと、三番目の部分だけ、違う書式になっているとしか思えません。一定の規則によって書かれたものなら、同じように反応するはずですが、そこに違う入力の仕方をしたものに対して、マクロでは判定が出来ません。やり方によっては可能という人もいるとは思いますが、私は、この部分をピンポイントで区分けするだけのマクロを書くと、逆に別のところで誤動作しかねないように思うのです。 長くなりましたが、以上の状況で、残念な結果をお伝えしなければなりませんでした。 ここの掲示板では、自信家の回答者さんたちもいますから、私の書いた内容を批判する人もいるとは思いますが、私の考えは、今の時点では、こういう考えで間違いないとしか思えないのです。そうでないとありえない現象だからです。

ybsteed
質問者

お礼

ありがとうございます。 >(注)あああ。と3つ並んでいる所にかからなかったのは(注)の中の文章に()があるとかからなかったようです。 試行錯誤した結果下記の様なマクロになりました。これで一応かけたい所にはかかります。 しかし文言が変わったり小さな変化で書き直さなくてはならなくなるので これから(注)と改行が2つ続いている所(1つ目の改行は文章後、2つ目の改行は行に文章がない)の位置を取得しその間をPTを変えるのが出来ればと考えています。 Wendy02の記述方法には初めてみるものもありとても勉強になりました。 ありがとうございました。 もしまた何かあればご教授宜しくお願い致します。 Public C As Boolean Sub ChagNumberFont() Dim p As Paragraph Dim i As Long On Error Resume Next With ActiveDocument.Content For Each p In .Paragraphs p.Range.Select If CheckParagraph(Selection.Range, i) Then p.Range.Font.Size = 9 p.Range.HighlightColorIndex = wdPink p.Range.EndOf Unit:=wdParagraph, Extend:=wdExtend End If Err.Clear Next End With On Error GoTo 0 End Sub Function CheckParagraph(ByRef rng As Range, ByRef i As Long) Dim Ar As Variant Dim strTxt As String Dim s As Variant Dim flg As Boolean Dim ln As Long flg = False Ar = Array("[((]注[))]", "[((][1-21-2][))]", "[(1)(2)]", "・", "[1-6]", "[債]") ln = Len(rng.Text) strTxt = Replace(rng.Text, Space(1), "", , , 1) i = ln - Len(strTxt) For Each s In Ar If strTxt Like s & "*" Then If rng.Information(wdWithInTable) = False Then If (s = Ar(4) Or s = Ar(1)) And C = False Then Exit For flg = True Exit For End If End If Next If flg = True And s = Ar(0) Then C = True ElseIf flg = False Then C = False End If CheckParagraph = flg End Function

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

#4の補足訂正 >× '(1)(2)は、[マル1,マル2] です。自動変換されています。 '(1)(2)は、[マル1,マル2] です。掲示のために自動変換されていますから、元のマル付き文字に書き換えてください。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 ひとつにまとめるためには、こちらが、確実に、きちんと理解していないと、私自身、ベタ書きにコード(For ~ Next)を書くしかありません。「?クエスチョンマーク」が文中に出てきますが、Unicode のようにも思えてきます。その部分を確かめていただけますか?こちらも、できれば、コードの全体を崩さずに、検索値とオブションだけで、他は付け加えずに済ませたいです。 >変わって欲しくない場所にもかかってしまうため というのは、補足の中にありますか?どういうものですか? '-------------------------------------------  .Text = "[\((][注1-2][\))]" ←半角の1~2  .Text = "?"     二つあるので良く分かりません  .Text = "?"      〃  .Text = "[2-4]." '全角の2~4  .Text = "・"  '中黒点 '------------------------------------------- .Text = "?" ←これは、Unicode ミドット(・)のことですか?ここのサイトは、Unicode はサポートされてはいませんが、文字を貼り付けると確か、文字コードが出てきたはずです。文字コードがあれば、こちらは内容は分かります。 なお、上記の条件なら、  .MatchByte = False    ↓  .MatchByte = True   になりますね。

ybsteed
質問者

補足

申し訳ありません。 ?になっている所に入れたかったのはマル1、マル2です。 β版で先程開いていており補足入力ではきちんと入力されていたので確認してませんでした。 変わって欲しくない場所は (1)、(2)、(3) 1.、2.、3. あああ・ああああ が他の場所にありまして「あああ・ああああ」に関しては「・ああああ」にマクロがかかってしまいました。 つまり注記として書かれているもののみマクロをかけたいと思っています。 他に注記には下記の様な種類もあります。 (注)1.ああああ      いいいい。    2.うううう。    3.ええええ。    4.おおおお。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >最後の一つは★の所に改行があるため”(注)ああああ。”しかかかりません。 もし、以下が、ひとつのパラグラフになっていれば、全部に色が付きますが、それは、それぞれがパラグラフになっていますので、それぞれを検索します。 >(注)ああああ。★ >  (1)いいいいい。★ >    (1)ううううう。★ >    (2)えええええ。★ これ全体をパラグラフにするのも良いのですが、今度は、最初の質問の検索記号を使って、こうします。  With Rng.Find      .ClearFormatting      .Text = "[\((][注0-9][\))]"      .MatchByte = False      .MatchWholeWord = True      .MatchWildcards = True 'ワイルドカード--True 以下の設定と相対関係      .MatchFuzzy = False   'あいまい検索--False      .Format = True

ybsteed
質問者

補足

ありがとうございます。 これで(注)(1)等は出来ますね。 すいません、私の説明不足だったのですが (注)1.ああああ    (1)いいいい     ?うううう     ?うううう      ・ええええ      ・ええええ    (2)いいいい    2.ああああ    3.ああああ    4.ああああ とあります。 .Text = "[\((][注0-9][\))]"を .Text = "[\((][注0-90?9][\))]" とすれば2.3.4.もかかりますが、変わって欲しくない場所にもかかってしまうため .Text = "[\((][注1-2][\))]" .Text = "?" .Text = "?" .Text = "[2-4]." .Text = "・" を別々にForNextで回す方法でなら変えたい場所が変わりました。 これを少ないForNextもしくは他の方法でスマートに書く方法はございますか?

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 >“(注)”もしくは“(注)”という文字列を検索して次に現れる空白改行 空白改行という単語の意味が理解できないのですが、改行までというなら、wdParagraph です。(厳密には、改行という言い方はおかしいです)そうでないなら、その取得したParagraph のRange.Text から、空白や書式記号などの位置を探さなくてはならないと思います。 ' .EndOf Unit:=wdSentence, Extend:=wdExtend     ↓  .EndOf Unit:=wdParagraph, Extend:=wdExtend   '------------------------------------------- それと、 >“(注)”もしくは“(注)”という文字列を検索して ということでしたら、以下のようにしても良いと思います。 .Text = "[\((][注][\))]"    ↓   .Text = "(注)"    .MatchByte = False   .MatchWildcards = False   .MatchFuzzy = True   .Format = True なお、.MatchWildcards = True にするなら、 .MatchFuzzy = False このプロパティも念のために加えておきます。それから、念のために、.ClearFormatting も加えてください。エラーや誤動作をさせないためです。Word VBAは、略さないようにしてください。表の検索等の設定が残っていることがあります。

ybsteed
質問者

補足

ありがとうございます。 (注)あああああ。 (注)ああああ。いいいいい。 (注)ああああ。★   (1)いいいいい。★     (1)ううううう。★     (2)えええええ。★ 上の2パターンは出来ました! しかし最後の一つは★の所に改行があるため”(注)ああああ。”しかかかりません。 このため”(2)えええええ。”の下に文字が何もない改行記号のみの行があるため、それを探せればマクロがかかるかなと思ったのです。 言い方がよく解らず空白改行などと書いてしまいましたが…。 これだと空白の位置を探す必要があるのでしょうか?

関連するQ&A

  • Word2007のマクロについて

    こんにちは。 Word2007のマクロについて質問させて下さい。 ・タイトル行が(16738047)色で、本文が黒文字の日本語の文書があります。 ・タイトル行内でキーワード検索を行いたいです。 ・1個ずつ内容を確認したいので「次を検索」 MsgBoxを使用しています。 以下のコードを実行すると、単語が1個飛ばしに選択されてしまいます。 どこを変更すればいいでしょうか? 教えてください。よろしくお願いします。 Sub タイトル検索() Dim myKW As String 'キーワード myKW = InputBox("検索する文字を入力して下さい") Selection.HomeKey Unit:=wdStory 'カーソルを文頭に移動 With Selection.Find .ClearFormatting .Font.Color = 16738047 .Text = myKW .MatchWildcards = False .MatchFuzzy = False If Len(myKW) = 0 Then Exit Sub If .Execute = True Then Do While .Execute If MsgBox("次を検索", vbokcansel, "確認") = vbOK Then Selection.Find.Execute End If Loop   MsgBox "処理が終了しました。" Else MsgBox "文字はありませんでした。" End If End With With Selection.Find ' 検索・置換のクリア .ClearFormatting: .Replacement.ClearFormatting .Text = "": .Replacement.Text = "" .MatchWildcards = False: .MatchFuzzy = False End With End Sub

  • Wordのマクロの繰り返しと停止

    Wordで"XX"の場所に"★"の後にある文字列を挿入、という以下のマクロを記録したのですが、この作業を★がなくなるまで繰り返したいと思っております。どのように記入すればよいでようか? Selection.HomeKey Unit:=wdStory Selection.Find.ClearFormatting With Selection.Find .Text = "★" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Selection.Delete Unit:=wdCharacter, Count:=1 Selection.Delete Unit:=wdCharacter, Count:=1 Selection.EndKey Unit:=wdLine, Extend:=wdExtend Selection.Cut Selection.HomeKey Unit:=wdStory Selection.Find.ClearFormatting With Selection.Find .Text = "XX" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Selection.Paste Selection.TypeBackspace End Sub

  • Wordのマクロを造りたいです。

    マクロの条件は以下のとおりです。 カタカナ⇒全角 英数字記号⇒半角 別途指定文字の変換 (例)   (1)⇒[1] 変換文字個数を表示 上記、4つの内容を1つのマクロ内で処理したいです。 お知恵をお願いします。 現在使用しているのは以下のマクロです。 Sub 電子納品のための変換プログラム() ' ' 電子納品のための変換プログラム Macro ' 記録日 2006/01/19 記録者 HP Customer ' With Selection.Find .MatchFuzzy = False End With t = 0 ' 英字 While Selection.Find.Execute(FindText:="[A-z]", _ Wrap:=wdFindContinue, MatchWildcards:=True) = True Forward = True MatchWildcards = True Selection.Range.CharacterWidth = wdWidthHalfWidth t = t + 1 Wend ' 数字 While Selection.Find.Execute(FindText:="[0-9]", _ Wrap:=wdFindContinue, MatchWildcards:=True) = True Forward = True MatchWildcards = True Selection.Range.CharacterWidth = wdWidthHalfWidth t = t + 1 Wend ' カナ文字 While Selection.Find.Execute(FindText:="[ヲ-ン][゛゜]", _ Wrap:=wdFindContinue, MatchWildcards:=True) = True MatchWildcards = True Selection.Range.CharacterWidth = wdWidthFullWidth t = t + 1 Wend While Selection.Find.Execute(FindText:="[ヲ-ン]", _ Wrap:=wdFindContinue, MatchWildcards:=True) = True MatchWildcards = True Selection.Range.CharacterWidth = wdWidthFullWidth t = t + 1 Wend While Selection.Find.Execute(FindText:="[。-゜]", _ Wrap:=wdFindContinue, MatchWildcards:=True) = True MatchWildcards = True Selection.Range.CharacterWidth = wdWidthFullWidth t = t + 1 Wend t = CStr(t) Msg = t + "件の変換がありました。" MsgBox (Msg) End Sub

  • wordマクロで検索⇒フォント変更したいが、結果がとびとびになります。

    MSwordのマクロについてです。マクロはど素人です。 「数式に使うa,b,n,p,q,r,t,u,v,w,x,y,zの文字を検索して、CMUserifというフォントに変え、サイズを2pt大きくする」 つもりで、以下のマクロを見よう見まねで作って実行したところ、うまく変更される文字とされない文字が混在してしまいます。 これはどのような理由によるもので、また、どのようにマクロを訂正すればよいのでしょうか。 --- Sub 数式用フォントに変更() Selection.StartOf wdStory With Selection.Find Do While .Execute(FindText:=\"[a-bn-np-rt-z]\", Forward:=True, Format:=False, MatchWildcards:=True, MatchSoundsLike:=False) = True With Selection Selection.Find.Execute Selection.Font.Name = \"CMU Serif\" Selection.Font.Size = Selection.Font.Size + 2 Selection.Find.ClearFormatting End With Loop End With End

  • Wordマクロ

    Wordでワイルドカードを使った置換マクロを作ったのですが、 「MatchWildcardsとMatchSoundsLike、MatchAllWordForms、MatchFuzzyは、同時にTrueに設定することはできません。」 というエラーが出てしまいます。 MatchSoundsLike、MatchAllWordForms、MatchFuzzyは、 ソースに書いてないしTrueにもしていません。 どこが悪いのでしょうか? 以下がソースファイルです、よろしくお願いいたします。 Sub substitute() ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "[!a-f]{1,}" .Replacement.Text = "@" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub

  • wordのマクロがわかりません。。。

    wordのマクロの解析ができません。 どなたかお願いします。 できれば、行ごとの意味教えて欲しいのですが Application.Dialogs(wdDialogMailMergeOpenDataSource).Show With ActiveDocument.MailMerge .Destination = wdSendToNewDocument .SuppressBlankLines = True With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=True End With よろしくお願いします。

  • Wordの文章中の一致した文字のある段落を削除する

    MS-Wordの文章を検索して行頭に一致した文字がある段落を削除するマクロを作りたいと思いチャレンジしています。 たとえば,文章を頭から順に検索して,行頭にある文字が検索文字と一致した場合,その段落を削除して,次の行を検索し続け,文書が終わったら終了するようなマクロです。 小生,WordVBAを2日ほど前から学び始めたばかりで,ネットや参考書を探しまして,"@"マークが行頭にある段落を削除するというサンプルを作るところまでは何とかできたのですが,これを文章全体に一括して実行できるマクロにするにはどうすればよいかに手こずっています。 このマクロがあると仕事の効率がぐんとアップしますので,何とかしたいと思っています。 是非ご教いただければ大変ありがたく思います。 <サンプル> Sub test_DeleteParagraph() Selection.HomeKey Unit:=wdStory, Extend:=wdMove With Selection.Find .Forward = True .ClearFormatting .MatchWholeWord = True .MatchCase = False .Wrap = wdFindContinue If .Execute(FindText:="@", Forward:=True, Format:=True) = True Then Selection.HomeKey Unit:=wdLine, Extend:=wdMove Selection.MoveDown Unit:=wdParagraph, Extend:=wdExtend lVal = Selection End If Selection.Delete End With Selection.Find.ClearFormatting End Sub

  • word2007 マクロ

    下記マクロは蛍光ペンの箇所を括弧と空欄で書き換え、穴あき問題にするマクロです。 これを、文字数の分だけ、空欄をつくるにはどうすればいいのか? また、蛍光ペンではなく、赤文字を括弧と空欄で書き換えるにはどうすればいいのか、 教えて頂けたら幸いです。 Sub Macro7() Selection.HomeKey wdStory '文章の最初をカーソル移動 p1: Selection.Find.ClearFormatting Selection.Find.Highlight = True '蛍光ペンを問題にする With Selection.Find .Text = "" '文字は問題にしない .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = True End With Selection.Find.Execute '検索実行 If Selection = m Then Exit Sub '同じところを繰り返し見つけ出したら終わる x = "(        )" 'カッコで囲む語句を作成(蛍光ペンなし) m = x '終わり判定のため保存 Selection.Delete '一旦消して Selection.InsertAfter x 'カッコつきを挿入。いわば置換 GoTo p1 End Sub

  • Word2010特定の名前を置き換えるマクロ

    例えば、Wordの文章で「田中」とあるものを「山田」に変えたい場合は、置き換えの機能を使ってマクロの記録ができると思います。 しかし、こうするとテキストボックスやヘッダフッタに記載された文字は変更できないように思います。 どうすれば、これらの文字も含めて置換の対象とすることができるか教えてください。 Sub Macro() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "山田" .Replacement.Text = "田中" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = True End With Selection.Find.Execute Replace:=wdReplaceAll End Sub

  • word2007 マクロ

    下記マクロは蛍光ペン部分を消して、その文字数分にアンダーラインを引くマクロになります これを改造して、赤文字を消して、その文字数分を空欄にしたいのです。 ですが、wdColorRedの入れ方が分かりません。ご教授お願いします。 Sub Problem() '蛍光ペン部分を消して、アンダーラインを引く Selection.Find.ClearFormatting Selection.Find.Highlight = True Selection.Find.Replacement.ClearFormatting Selection.Find.Replacement.Highlight = False With Selection.Find.Replacement.Font .Underline = wdUnderlineSingle .StrikeThrough = False .DoubleStrikeThrough = False .Outline = False .Shadow = False .Hidden = False .AllCaps = False .Superscript = False .Subscript = False End With With Selection.Find .Text = "*" .Replacement.Text = " ^z" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll End Sub

専門家に質問してみよう