• ベストアンサー

Word2003でマクロを使って特定文字列の大きさを調整したい

現在Word2003で文書を作っているのですが、本文中(脚注は対象外)の「()」と「〈〉」内の文字列(カッコそのものを含む)の大きさを一括で変換したいと思っています。 今のところ9ptで固定してよいだろうと思いますが、あとあと変更できるように、「カッコ内文字列」など任意のスタイルに変換してくれるとより望ましいです。 そういった作業にはマクロが便利だと聞いたのですが、マクロの知識はほとんどないため作り方が分かりません。 どなたか作り方やサンプルを示してくださいませんでしょうか。 お願いします。 ちなみに、カッコは当然すべて閉じられていますが、あるいは閉じ忘れのカッコが1つか2つくらいあるかも知れません。 そういった場合も考慮してくださると大変ありがたいですが、無理なら構いません。

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

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

こんにちは。 最初に、Wordのマクロの質問は、内容はどのようなものにしても、書く人の絶対数が少ないし、マニュアルもありませんので、勉強のしようがありません。どのような質問でも、回答する人にとって「挑戦的(Challenging)」なんです。---Challengingは、別の意味があります。(^^; それに、Wordは、マクロよりも難しい、フィールドコードがあります。 ThisDocument に登録してください。 ただ、今の段階では、 「()」と「〈〉」とは書かれていますが、このマクロは、全角・半角の区別をしてしまいますので、「〈〉」側の半角に相当するものがありません。 ここで、増やせば、他のパターンも入ります。 myPat = Array("\([^\)]+\)", "([^\)]+)", "\<[^\>]+\>") たぶん、その行中に、閉じ括弧がない場合や、中が何もない括弧・括弧閉じは選択されないはずです。あまり、大きなファイルは、もしかしたら、うまくいかない可能性があります。 --------------------------------------------------------- 'Option Explicit 'ここで換えます。 Const MYFONTSIZE As Double = 9 'フォントサイズ Sub FontsizeChangeMacro() Dim objRegExp As Object 'RegularExpression Dim mySelection As Selection Dim myPat As Variant Dim pt As Variant Dim Matches As Object Dim Match Dim mData() Dim v As Variant Dim i As Long 'オブジェクトの設定 Set objRegExp = CreateObject("VBScript.RegExp") myPat = Array("\([^\)]+\)", "([^\)]+)", "\<[^\>]+\>") Application.ScreenUpdating = False Selection.HomeKey Unit:=wdStory Selection.EndKey Unit:=wdStory, Extend:=wdExtend Set mySelection = Selection   With objRegExp   For Each pt In myPat     .Global = True     .IgnoreCase = False     .Pattern = pt     Set Matches = .Execute(mySelection)      For Each Match In Matches        ReDim Preserve mData(i)        mData(i) = Match.Value        i = i + 1   Next Match   Next pt   End With   If i = 0 Then     MsgBox "フォントを変える対象がありません。"     Exit Sub   End If   For Each v In mData    SearchWordProc v   Next   Application.ScreenUpdating = True   Selection.HomeKey Unit:=wdStory   Set objRegExp = Nothing End Sub Sub SearchWordProc(ByVal myStr As String) Selection.Find.ClearFormatting  With Selection.Find   .Text = myStr   .Replacement.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.MoveStart Unit:=wdCharacter, Count:=1    Selection.MoveRight Unit:=wdCharacter, Count:=-1, Extend:=wdExtend    Selection.Font.Size = MYFONTSIZE    Selection.Collapse End Sub

world0621
質問者

お礼

ありがとうございます。 マクロを完全な形でお示しくださり、感謝の言葉もありません。 お蔭様でカッコ内文字列の一括変換に成功しました。 ただ、このマクロですとカッコ内の文字列だけが9ptに変換され、カッコそのものは変換の対象外になってしまっているようです。 カッコそのものを含めて変換するにはどうすればよいのでしょうか。 恐らく myPat = Array("\([^\)]+\)", "([^\)]+)", "\<[^\>]+\>") の行を少し修正すればよいのではないかと思いますが、不勉強なものでその修正の仕方すら分かりません。 できましたら、その点についてもご教授願えませんでしょうか。 宜しくお願いいたします。

その他の回答 (3)

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

こんにちは。 #2の回答者です。 >このマクロですとカッコ内の文字列だけが9ptに変換され、カッコそのものは変換の対象外になってしまっているようです。 すみません、気を回してしまったのです。 本来は、括弧付きのほうが簡単です。(^^; >myPat = Array("\([^\)]+\)", "([^\)]+)", "\<[^\>]+\>") ここでは、括弧と中の文字を取得しています。そのほうが簡単ですからね。 中身だけだと、一般の文章の中で、同じ文字があるとヒットしてしまうからです。 最後から、5行目・6行目 >   Selection.MoveStart Unit:=wdCharacter, Count:=1 >   Selection.MoveRight Unit:=wdCharacter, Count:=-1, Extend:=wdExtend を削除すれば、括弧も一緒に変換されます。 なお、Excelとは違い、マクロがうまく行かなかった場合は、Ctrl + Z (戻す)で戻してくれます。 以下は、余談(よけいな話) ------------------------------------------------------- #1の方のお話は、ここでも良く聞く話で、驚かされことがあります。 Wordマクロは、掲示板でも、あまり解決していないようです。海外の掲示板には、この2 バイト文字の問題がないので、あまり応用できるものが少ないです。まして、未だに、日本では、JISが主流で、Unicode との整合性で、ややこしくさせています。 Office VBAでは、Excel、Word、Outlook, Access の四つは、一通り使いこなせない、出来ると認められないのですが、それにしては、マニュアルが少なすぎます。特に、Word VBAの日本で出版された過去の書籍は、プレミアがついてしまい、元値の4倍ぐらいの値段がします。今、流通している書籍は、2冊のテクニック集だけです。このひとつの本の書籍の著者は、マクロを作ってくれるけれども、有料のようです。 もし、勉強したいとなると、今のところ、英語版になってしまうのではないかと思います。それと、困った問題が、今、発展しつつあるのは、Word VBAは、オブジェクト指向というわけでもないのですが、どうやら、Excelよりも先に、クラス・インスタンスを必要とされるようで、最初に、クラス側に作ってやらないと動かないものがあります。ますます、一般のVBAプログラマには手の届かない存在になってしまうようです。すでに、ここの掲示板でも、Wordマクロで、私の回答した中に1件出てしまいました。

world0621
質問者

お礼

ありがとうございます。 お蔭様でカッコそのものもちゃんと変換されるようになりました。 今後はなるべく皆さんのお手を煩わせないようにしたいのですが、Wordマクロの勉強は思ったよりも大変そうで、少し戸惑っています。 何はともあれ、今回は本当にありがとうございます。 重ねてお礼申し上げます。

  • assault852
  • ベストアンサー率48% (1364/2797)
回答No.3

回答1の者です。失礼します。 ちゃんと回答してくれる方がいてよかったです。 VBA(マクロ)の知識がない方に、VBAを使わないと解決できないような仕事を頼むことになる、それも期限が迫っているような状態で。 そんな仕事の進め方をされている職場があるということが、私自身とても信じ難かったので、回答1のような回答をしてしまいました。

world0621
質問者

お礼

ご心配くださりありがとうございます。 実は職場でなく、大学院の研究室で今回のようなマクロが必要になったのです。

  • assault852
  • ベストアンサー率48% (1364/2797)
回答No.1

回答にならないのですが。 VBA(マクロ)に関する質問は、はじめから教えてもらうのではなく、ご自分である程度学習されてから、要点を絞って質問された方が宜しいと思います。基礎がない方にご説明してもあまり身にならないのではないかと思います。

world0621
質問者

お礼

すみません。 現在急いでいるもので、マクロについてちゃんと勉強するだけの余裕がありません。 後日落ち着いたらちゃんと勉強してみようと思います。 ご忠告ありがとうございます。

関連するQ&A

  • 特定文字列に同じスタイルを一括で当てる方法(Word 2000)

    Word 2000 で、特定文字列に同じスタイルを一括で当てる方法を教えてください。具体的には、Docファイル中で [[ と ]] で囲まれた文字列、およびこの二重括弧自体に、同じスタイルを一括で当てたいのです。たとえば、次のようなものです。 [[AB_C1_D3]] よろしくお願いします。

  • Word:文字列一括選択→書式変換

    Word 2003/2007を併用しています。 Word文書中の(1995年)や(略)など、括弧に囲まれた文字列を一括して選択し、選択した文字列に対しフォントを落とすなどの書式変換を行いたいと思っています。しかし、特に前者の、「特定条件の文字列を一括選択」をどのようにすればよいのかわからなくて困っています。よい方法をご存じの方がいらっしゃいましたら、お教えいただければ幸いです。 お手数をおかけいたしますが、よろしくお願い申し上げます。

  • Wordの脚注番号を一括して上付文字に戻す方法

     使用ソフトはWinのWord2003およびMac Office 2004です。     脚注番号は、デフォルトでは「脚注参照」のスタイルが用いられており、番号部のみ上付文字(小さい文字)で表示されますよね。    しかし、誤って、脚注番号を含めて、標準のスタイルシートで上書きしてしまったため、本文中の脚注番号と、脚注内の脚注番号全てが上付き文字でなくなってしましました。  200近く註があるので、いちいち脚注番号の文字列だけを選択して、「脚注参照」に修正し直すのは、不可能ではないにせよ、とても面倒です。  本文中、脚注番号の数字のみを選択して、一括して上付き文字に戻す方法はないでしょうか? PS  なお、WordのDocファイルがが開ける別のワープロソフトとして、一太郎や・ナイサス・ライターズ・エクスプレスを所有しています。 

  • ワードのマクロについて

    お世話になります。 エクセルのマクロについてはここでよくアドバイスをもらっていますが、今回ワードでの処理について教えてください。 1つのフォルダにワード文書がたくさん入っています。 各ワード文書に対し以下の操作を自動化させたい。 1.すべてを選択(ctrl+A) 2.置換で「改行」をすべて削除   あいまい検索のチェックをはずした上で 検索する文字列 ^p  置換後の文字列は「空白」   すべて置換 3.置換で「スペース」をすべて削除   あいまい検索のチェックをはずした上で 検索する文字列 ^w  置換後の文字列は「空白」   すべて置換     4.すべてを選択 5.メニュー→書式→文字種の変換→全角にチェック→OK    ですべての文字を全角にする まとめると「すべての改行、スペースを削除し、全文字を全角に統一する」 この作業をフォルダ内の全ワード文書に対して一括で処理できないでしょうか? ちなみにワード文書は元々メモ帳(*.txt)で作成されていたものをリネームソフトで拡張子を*.docに変換したものです。そのためファイルを閉じるときに「書式なし形式で使用できない機能が含まれています」と聞いてきますが「はい」でOKです。 アドバイスおねがいします。

  • 文字列を日付データに変換 マクロ

    他の方の質問等を参考にしているのですが、どうもうまくいかないので教えてください。 エクセル2007を使ってるのですが、 マクロで文字認識している日付を日付データ認識させたいのです。 H10.1.4やH19.12.14等が2000件くらい文字列として入力されている データを日付認識させて、経過年数や経過日数などを求めようと思ってます。 マクロで一括変換する方法または、変換した日付データを隣の列に入力できる方法がございましたら教えて頂きたく思います。 お願いします。

  • 特定の文字列を抽出するマクロについて

    こんにちは、マクロ初心者です。 調べてもどうしても分からないことがあって困っています。 どなたかお教えいただけると幸いです。 1.以下の様に100個ほどの文章があります。 A1セル 今日は東京にいます。明日は大阪に、明後日は名古屋にいきます。 A2セル 東京はまだ寒いですね、大阪はどうですか?         ・         ・         ・ 2.以下の文字列を一括で抜き出したいです。 東京 大阪 名古屋 沖縄 。 、 ? 3.出力結果を以下にしたいです。 B1セル 東京。大阪、名古屋。 B2セル 東京、大阪?         ・         ・         ・ ※逆に言えば、2で指定した文字列以外を全て削除してB列に返したいという意味です。 何卒よろしくお願いいたします。

  • エクセルで特定文字列の抽出マクロを教えてください

    エクセルで以下のような文字列を抽出するマクロを教えてください。 On 2009/07/07, at 21:55, mail*****@docomo.ne.jp wrote: メールのやり取りの本文内容から上記部分だけを抽出したいと考えています。 日時は変わりますが、他箇所は一緒です。 よろしくお願い致します。

  • <文字列マクロについて>

    <文字列マクロについて> 皆さま お力を貸して下さい。 初心者で、何もわからず書いておりますがすみません。 下記の2つのマクロを教えて下さい。 ?横に並んだ「ある行」に在るデータを「列」に変換し、  指定した数だけ並べる    あいうえお    ←A1セルからE1まで5列(これは状況により変わる)       ↓(マクロ実行:3行同じ数だけ並べるという指定)  あ        →A1セルから下にひたすら、同じ文字が続き順に並ぶ  あ  あ  い  い  い  う  う        →A1セルから下に並べる(3行は指定できれば別の数字にも変えたい  う  え  え  え  お  お  お ?規則的に並んだデータのまとまりをセットで移動する。  例だと5つの塊(これは変数とおきたい)    あ A              a  い B              b  う C               c   え D               d  お E              e    ↓(マクロ実行)  あ  い  う  え  お  A  B  C  D  E      ・  ・  ・  ・    a b c d e    

  • ・エクセルで特定の条件に合う文字列を抜き出す方法を教えて

    ・エクセルで特定の条件に合う文字列を抜き出す方法を教えて 例のようにA列の文字の中からカッコ内(4桁数字“ハイフン”7桁数字)を B列に表示するにはどうしたらよいでしょうか。 ちょっと面倒なのはカッコは複数ある場合があり(xxxx-xxxxxxx)の条件に 合ったものだけを隣のセルに表示したいのです。 カッコとカッコ内は半角でxは不特定な数字です。 (例) A1=あいうえお(abcde)かきくけこ(xxxx-xxxxxxx)さしすせそ B1=xxxx-xxxxxxx よろしくお願いいたします。

  • Word 文書中の文字列を同一文書中で参照する方法

    Word 文書中の文字列を同一文書中で参照する方法をご教示ください. 例:文書の一行目の文字列→ 平成28年12月    ---本文---   ---本文---   ---本文--- *文中の罫線表で上記年月日を参照し以下の表示にする ーーーーーーーーーーーーーーーーーーーー | H28 | 12/1 | ーーーーーーーーーーーーーーーーーーーー | H28 | 12/2 | ーーーーーーーーーーーーーーーーーーーー   ・   ・   ・ ーーーーーーーーーーーーーーーーーーーー | H28 | 12/31 | ーーーーーーーーーーーーーーーーーーーー 注:MS Word(Win10 Office2016)です.

専門家に質問してみよう