Wordマクロでカタカナ⇒全角、英数字記号⇒半角、指定文字の変換、変換文字個数表示を行う方法は?

このQ&Aのポイント
  • Wordのマクロを使用して、カタカナを全角に変換し、英数字記号を半角に変換し、指定文字を別の文字に変換し、変換した文字の個数を表示する方法を教えてください。
  • 現在使用しているマクロでは、カタカナと英数字記号の変換と文字の個数表示が行えますが、指定文字の変換ができません。1つのマクロ内でこれらの処理を行う方法を教えてください。
  • マクロを使用して、Word文書内のカタカナを全角に変換し、英数字記号を半角に変換し、指定文字を別の文字に変換し、変換した文字の個数を表示する方法を教えてください。
回答を見る
  • ベストアンサー

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

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

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

こんばんは。 Sub HankakuZenkaku() の作者です。 一応、元の文章にも書かれてありますが、 >'半角カタカナ >FChr = Chr("&HA6") '半角ヲ >LChr = Chr("&HDF") '半角゜ の部分は、掲示板上、半角カタカナを書き出せないので、書いているまでですから、半角カタカナのままお使いになってよいです。 別途指定文字の変換 (例)   (1)⇒[1] 以下のようなものを、最後の部分に付け加えてください。本来は、正規表現を使えばよいのですが、全体の調子が変わりますので、このようなものにしました。ただし、Wordの一般 Document 上しかためしていません。Wordには、このほかにも、OLEのTextBox やField やAutoShape など、さまざまなものがありますから、うまく行かない場合は、再び考えていくしかないと思います。Sample自体は、ここの掲示板を検索すれば、私のコードが出てきます。 --------------------------------------- Dim buf As String '付け加える '指定語 While .Execute(FindText:="\([0-9]{1,}\)", _   Wrap:=wdFindContinue, MatchWildcards:=True) = True   buf = Selection.Range.Text   buf = Replace(buf, "(", "[", , , 1)   buf = Replace(buf, ")", "]", , , 1)   Selection.Range.Text = buf   Selection.Range.Collapse Direction:=wdCollapseEnd   buf = ""   t = t + 1 Wend --------------------------------------- 変換文字個数を表示 この問題は、色を加えていくとか、最初に選択をしておいて一気に換えてしまうという方法がよいのですが、逐次で、変換していくために、もし、そのようにするには、全面的なコードを変更しなければならないと思います。出来れば、そのままでお使い願いたいです。 なお、Wordの検索・置換マクロは、 >With Selection.Find >.MatchFuzzy = False >End With このように、一部ではなく、必ず、すべてを初期化してから実施するようにしてください。誤動作することが多いです。

510motoki
質問者

お礼

すいません… 全くの初心者なので良く解らないのですが戴いたプログラムを追記しただけでは動きませんでした。 プログラムの始めから終わりまで教えてもらえませんか?

その他の回答 (3)

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

こんばんは。 >(1) >↓ >[1] >へ置き換える場合は以下のようにすればよいですか? 私の書いたマクロではダメだったということでしょうか。#3のお礼の内容は、コードとしてこちらが提示したものとは、まったく違いますので、なんともお答えのしようがありません。こちらの回答の範囲外になってしまいます。 おそらくは、#3のお礼で書いたものは、記録マクロだと思いますが、その良否の判定は出来ませんが、 (1) ↓ [1] ということで、置換のプロパティのデフォルト状態が守れるなら、それで可能だと思います。記録マクロでは、その状態が確保できませんので、マクロの結果が不安定になります。また、Wordのヘルプに書かれてあるワイルドカードを参考になさってもよいと思います。 それに、あくまで、他人のコードでなく、ご自身のスタイルでマクロをお書きになりしたいのでしたら、最初に、その旨をおっしゃっていただいたほうが良いと思います。私は、以下のサイトで勉強しました。 http://word.mvps.org/FAQs/MacrosVBA/index.htm 英語ですが、Wordのマクロを集めたサイトです。日本語の2バイトのサポートがないので、それだけは、なかなか参りました。

510motoki
質問者

お礼

ありがとうございます。 頑張って見ます。

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

こんばんは。 >全くの初心者なので良く解らないのですが戴いたプログラムを追記しただけでは動きませんでした。 質問の元のコードは、記録マクロでは出来ないはずだと思いましたので、必要な部分だけを書きました。 指定語の Selection.Range.Collapse Direction:=wdCollapseEnd は、きちんとヒットしていれば、必要ありませんが、これがないと、無限ループに陥る可能性があります。 コードの置き場所は、ThisDocument もしくは、標準モジュールです。 '--------------------------------------------------- Sub HankakuZenkaku2() Dim buf As String Dim t As Integer Dim myMsg As String Dim FChr As String Dim LChr As String Selection.HomeKey Unit:=wdStory '文書の先頭に On Error GoTo Errmsg: With Selection.Find   .ClearFormatting   .Text = ""   .Replacement.Text = ""   .MatchFuzzy = False '半角カタカナ FChr = Chr("&HA6") '半角ヲ LChr = Chr("&HDF") '半角゜ While .Execute(FindText:="[" & FChr & "-" & LChr & "]{1,}", _   Wrap:=wdFindContinue, MatchWildcards:=True) = True   Selection.Range.CharacterWidth = wdWidthFullWidth   t = t + 1 Wend '数字 While .Execute(FindText:="[0-9]{1,}", _   Wrap:=wdFindContinue, MatchWildcards:=True) = True   Selection.Range.CharacterWidth = wdWidthHalfWidth '半角   t = t + 1 Wend 'アルファベット While .Execute(FindText:="[A-z]{1,}", _   Wrap:=wdFindContinue, MatchWildcards:=True) = True   Selection.Range.CharacterWidth = wdWidthHalfWidth   t = t + 1 Wend '指定語 While .Execute(FindText:="\([0-9]{1,}\)", _   Wrap:=wdFindContinue, MatchWildcards:=True) = True   buf = Selection.Range.Text   buf = Replace(buf, "(", "[", , , 1)   buf = Replace(buf, ")", "]", , , 1)   Selection.Range.Text = buf   Selection.Range.Collapse Direction:=wdCollapseEnd   buf = ""   t = t + 1 Wend    Selection.HomeKey Unit:=wdStory '文書の先頭に    If t > 0 Then     myMsg = t & "語、変換しました。"    Else     myMsg = "変換するべき文字はありませんでした。"    End If    MsgBox myMsg, vbInformation End With   Exit Sub Errmsg:   MsgBox "エラー!: " & Err.Description, vbExclamation End Sub

510motoki
質問者

お礼

ありがとうございます。 早速使用したのですが指定語のところで 例えば (1) ↓ [1] へ置き換える場合は以下のようにすればよいですか? '指定語 Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "(1)" .Replacement.Text = "[1]" .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

回答No.1

こちら↓の過去ログが参考になるのでは 半角カナは全角カナに、全角英数字は半角英数字に、一気に置換したい http://oshiete1.goo.ne.jp/qa3283357.html

関連するQ&A

  • 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で"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

  • ワードでマクロがうまくいきません。

    よろしくお願いします。 マクロの知識はほとんどないのですが、 「マクロの記録」の機能を使い、ワードで 「スペースを探し出し、そのスペースにアンダーラインを引く。」 ために、 -------------------- 編集ー置換ー 検索する文字列にスペースをタイプ、 置換後の文字列にスペースをタイプ、 オプションの書式で、フォント、下線、一重下線 すべて置換 -------------------- マクロの記録を選択した後、上のように作業しました。 そしてマクロの記録をとめました。 マクロの記録中の操作では、思い通りに置換されるのですが、 次にそのマクロを作動させると、なにもおこりません。 なにか変な操作をしたのか、と五度くらい試したのですが、 やはり動きません。 中身は、↓のようでした。 -------------------- Sub Macro2() ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting 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 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

  • 以下のようなマクロを作成しましたが、文章の最後まで連続置換をしたい場合

    以下のようなマクロを作成しましたが、文章の最後まで連続置換をしたい場合はどうすればよいのでしょうか。 ご教示をお願い致します。 ************************ Selection.Find.ClearFormatting With Selection.Find .Text = "<G>*<M>" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With Selection.Find.Execute Selection.Font.Name = "MS ゴシック" Selection.Find.ClearFormatting With Selection.Find .Text = "<G>*<M>" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchFuzzy = False .MatchWildcards = True End With 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

  • WORD VBA 繰り返し処理

    WORD VBAについて教えてください。 つぎのようなマクロがあり、これを検索する文字列がなくなるまで、繰り返して、処理するようにしたいのですが、どうすればよいのでしょうか? Sub Macro1() Selection.Find.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 Selection.MoveRight Unit:=wdCharacter, Count:=1 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

  • 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

  • 特定の色のマーキングだけを解除するマクロ

    Wordのマクロについての質問です 複数の色でマーキングしている文書があり、 特定の色のマーキングだけを解除するマクロを 作成していますが、マーキングの色の指定の仕方がわかりません。 マーキングの色の指定はどのよう(どこ)にすれば、よいのですか。 Sub マーキングなし() ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting Selection.Find.Replacement.Highlight = False With Selection.Find .ClearFormatting .Highlight = True .Text = "" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True End With Selection.Find.Execute Replace:=wdReplaceAll end sub

専門家に質問してみよう