ワードで算用数字を漢数字に変換するマクロについて

このQ&Aのポイント
  • ワードで算用数字を漢数字に変換するマクロの修正方法やアドバイスを教えてください。
  • 22を二二、100を一〇〇に変換する方法やマクロについて探しています。
  • 現在試したマクロでは全く反応がなかったので、問題の修正方法を教えてください。
回答を見る
  • ベストアンサー

ワードで算用数字を漢数字に変換するマクロについて

お世話になっております。 ・ワードで算用数字を漢数字に変換する方法又はマクロを探しています。 ・希望例: 22→二二、 100→一〇〇等 ・以下のマクロを実行しましたが、全く反応がありません。 (マクロについてはずぶの素人です) Option Explicit Sub KanToNum() Dim num As Integer, kan() As Variant kan() = Array("〇", "一", "二", "三", "四", "五", "六", "七", "八", "九") For num = 0 To 9 With ActiveDocument.Content.Find .Text = kan(num) .MatchByte = False .Replacement.Text = num .Execute Replace:=wdReplaceAll End With Next num End Sub マクロの修正を含めアドバイスをお願いします。 よろしくお願いします。

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

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

>・ワードで算用数字を漢数字に変換する方法又はマクロを探しています。 たぶん、#1さんの引用先のコードは、マクロを探しているという目的なら十分かもしれません。ただし、その作者の方は、こうしたまな板の上に上げられることが望んではいないでしょうけれども、一度、点検したほうがよいのではないか、と思います。Word VBAは、情報が少ないので、自画自賛になり易いです。それは、私も含めてですが。 マクロを勉強しているということで、ご質問で出されたコードの問題点はどこにあるのか、ということでしたら、少し、コメントさせていただきます。 なお、 >(マクロについてはずぶの素人です) ここでは、Word VBAは、大勢の方も素人だと思います。少し分かるようになると、誰も自信をもって教えているわけです。ただ、掲示板では、あまり根拠のない指摘とExcel VBAのコードをそのまま転用することだけは遠慮してもらいたい所です。 あくまでも、質問上のことですから、書かせてもらいますが、マクロの修正の前に、そのコードは、何かの見本があるでしょうか?みなさん、Word VBAでは同じようなスタイルになるような気がします。Excel VBAの影響でしょうか?Excel VBAのようには書かないほうがよいと思います。 大きくわけて2点あります。  ActiveDocument.Content. 対象オブジェクトが違っています。置換は文字を対象としているのに、Rangeを対象にしているようです。もし、文字を対象にするなら、Selection を使うか、ActiveDocument.Content なら、一旦、Select してから、Selection で置換したほうがよいです。 次に、  .Text = kan(num)  .MatchByte = False  .Replacement.Text = num  .Execute Replace:=wdReplaceAll Word VBAは、Find メソッドは、そんなに省略してはいけないのです。省略することがよいとExcel VBAでは間違って覚える人もいますが、Word VBAでは違います。Wordは、なるべくプロパティは省略しないほうがよいです。それをすると、昨日動いていたマクロが、今日は動かないということが出てきます。 私なら、簡単なことだけれども、格好が悪くても、オーソドックスな書き方をします。それが無難なのです。今回は、少し削りましたが、プロパティ全部を書いてもよいと思います。思わぬことがあるので、私は、最初、省略しないことにしています。 '// Sub Kan2Num()  Dim num As Integer  Dim kan() As Variant  kan() = Array("〇", "一", "二", "三", "四", "五", "六", "七", "八", "九")    For num = 0 To 9   Selection.Find.ClearFormatting   Selection.Find.Replacement.ClearFormatting   With Selection.Find    .Text = num    .Replacement.Text = kan(num)    .Forward = True    .Wrap = wdFindContinue    .MatchWholeWord = False    .MatchByte = False    .MatchWildcards = False    .MatchFuzzy = True   End With   Selection.Find.Execute Replace:=wdReplaceAll  Next End Sub

LADEFENSE
質問者

お礼

お世話になっております。 ご丁寧なアドバイスをいただき誠にありがとうございます。

その他の回答 (1)

  • s-uzen
  • ベストアンサー率65% (2051/3118)
回答No.1

Word:算用数字⇒漢数字変換マクロ http://www.hi-ho.ne.jp/tomita/tips/tips_wd_002.html  

関連するQ&A

  • ワードで選択範囲だけの改行を削除するマクロ

    こんにちは いつもお世話になっています ワード2010で、選択範囲だけの部分の改行を削除するマクロを記録マクロで作ったのですが、選択部以外もすべて改行してしまいます。どこがいけないのでしょうか。あるいは、操作の仕方でしょうか。以前は使えていたと思うのですが、仕様が変わったのでしょうか。 任意の範囲を選択しておいて、記録を開始しました。 よろしくお願いします。 Sub Macro1() ' ' Macro1 Macro ' ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "^p" .Replacement.Text = "" .Forward = True .Wrap = wdFindAsk .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub ネット上で見つけた以下のマクロでもすべての改行が削除されます。 http://okwave.jp/qa/q960285.html Sub Macro14() Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "^p" .Replacement.Text = " " End With Selection.Find.Execute Replace:=wdReplaceAll End Sub

  • 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

  • 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

  • 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

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

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

  • Windows7, MSWord2007 でマクロを使用しています。以

    Windows7, MSWord2007 でマクロを使用しています。以前うまく行っていたのに今日はエラーで止まります。 記入した文字を日本字はMS明朝10.5PT, 半角アルファベットはTimesNewRomanPT12 に統一するマクロです。 [検索する文字列]に指定したパターンマッチングが正しくありません、と表示されます。 他人からいただいたマクロなので自分で直せません。ご援助いただければと存じます。 止まった行: .Execute Replace:=wdReplaceAll マクロ全文: Sub SelectedFontChangedMSMincho10_5TimesNewRoman12() Dim myRng As Range With ActiveDocument Set myRng = .Range(Selection.Range.Start, .Range.End) End With With myRng.Font .NameFarEast = "MS 明朝" .NameAscii = "Times New Roman" .NameOther = "Times New Roman" .Size = 10.5 End With With myRng.Find .ClearFormatting .Text = "[0-9A-Za-z,.\\\!\?""'/$\%\&\#\(\)\=\-\+\<\>]{1,}" '半角スペース~チルダ .Forward = True .Wrap = wdFindStop .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True .MatchFuzzy = False With .Replacement .ClearFormatting .Text = "" .Font.Size = 12 End With .Execute Replace:=wdReplaceAll End With End Sub

  • WORDマクロで単語リストテキスト内からヒットしたものだけを書き出したい

    ワードの文章中にList.txtに入っている単語をハイライトして太字に変更していくマクロを作成してみました。 検索にヒットした単語だけを outlist.txt へ書き出したいのですがどのような方法があるかご教授願えませんでしょうか。 現状だとすべての単語が書き出しされてしまいます。 過去ログやヘルプから見よう見真似で作成したマクロですので間違っている箇所もあるかもしれませんが、よろしくおねがいします。 list.txtは以下のように1単語で改行しているテキストです。 AAA BBB CCC ・ ・ Sub test1() Open "c:\list.txt" For Input As #1 Open "c:\outlist.txt" For Output As #2 While Not EOF(1)  Line Input #1, a  Selection.Find.ClearFormatting  With ActiveDocument.Content.Find .ClearFormatting .Text = a With .Replacement .ClearFormatting .Font.Bold = True .Highlight = True .Text = a End With .Execute Format:=True, Replace:=wdReplaceAll  End With Print #2, a Wend Close #2 Close #1 End Sub

  • ワード VBA

    ワードのマクロについて教えてください。 以下のようなマクロをボタンに登録しています。 Sub Macro10() Dim myReg As Object Dim st As String Dim match As Variant Set myReg = CreateObject("VBScript.Regexp") myReg.Pattern = "\x0d\x0d(|$)" myReg.Global = True st = ActiveDocument.Range.Text ActiveDocument.Range(1, 1).Select For Each match In myReg.Execute(st) With Selection .Find.Text = match.Value .Find.Replacement.Text = vbCr .Find.Execute , , , , , , , , , , wdReplaceAll End With Next st = ActiveDocument.Range.Text If myReg.Test(st) Then _ ActiveDocument.Range.Text = myReg.Replace(st, "") Set myReg = Nothing End Sub ここで教えていただきたいのは,上記のマクロを実行するためにボタンを押した際,実行前にカーソルが置かれていたのと同一の場所に実行後のカーソルを戻す方法です。(ちなにみ上記のマクロを実行する際にカーソルが置かれているのは,空白行ではない行の先頭です。※処理とは関係ないかもしれませんが,念のために。) そのような処理を行うには,上記のマクロにどのような記述を追加すればよいのでしょうか。 どなたかご教示いただければと思います。 どうぞよろしくお願いいたします。

  • マクロを教えてください。

    ワードでマクロがうまくいきません。 マクロの知識はほとんどないのですが、「マクロの記録」の機能を使い、ワードで試しています。 今回は、 「{}の括弧でかこまれた単語を探し出し、その単語を括弧ごと消去する」 というのをしたいのです。 例えば、 ------------------------------- あいうえお{事実}ということ ↓ あいうえおということ ------------------------------ にしたいのです。 自分は ---------------------------------------- -置換-で、「検索する文字列」に「{*}」 「置換後の文字列」になにも書かない で、「置換」をクリック -------------------- マクロの記録を選択した後、上のように作業しました。 そしてマクロの記録をとめました。 が、なにもおこりません。 (*はワイルドカードのつもりなのですが、間違っていますでしょうか。) なにか変な操作をしたのか、と五度くらい試したのですが、 やはり動きません。 中身は、↓のようでした。 -------------------- Sub Macro1() ' ' Macro1 Macro ' Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find .Text = "{*}" .Replacement.Text = "" .Forward = True .Wrap = wdFindAsk .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 文字変換マクロについて

    以下のvbsファイルがエラーなってしまいます。 どう直したらよいかご教授お願いします。(マクロ初心者) Const wdReplaceAll = 2 Set objWord = CreateObject("Word.Application") objWord.Visible = False Set fs = CreateObject("Scripting.FileSystemObject") Set objFolder = fs.GetFolder("D:\test") For Each objFile in objFolder.Files If Right(LCase(objFile.Name), 5) = ".docx" Then Set objDoc = objWord.Documents.Open(objFolder.Path & "\" & objFile.Name) Set objSelection = objWord.Selection ' objSelection.Find.Text = "A" ' objSelection.Find.Forward = True ' objSelection.Find.MatchWholeWord = True ' objSelection.Find.Replacement.Text = "B" '---------------------------------------------------------- Open "D:\test\2.csv" For Input As #1 While Not EOF(1) Line Input #1, a s = Split(a, ",") MsgBox s(0) & " " & s(1) Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting With Selection.Find '---------------------------------------------------------- objSelection.Find.Text = s(0) objSelection.Find.Forward = True objSelection.Find.MatchWholeWord = True objSelection.Find.Replacement.Text = s(1) '---------------------------------------------------------- objSelection.Find.Wrap = wdFindContinue objSelection.Find.Format = False objSelection.Find.MatchCase = False objSelection.Find.MatchWholeWord = False objSelection.Find.MatchByte = False objSelection.Find.MatchAllWordForms = False objSelection.Find.MatchSoundsLike = False objSelection.Find.MatchWildcards = False objSelection.Find.MatchFuzzy = True End With Selection.Find.Execute Replace:=wdReplaceAll Wend Close #1 End Sub '---------------------------------------------------------- If objSelection.Find.Execute( ,,,,,,,,,,wdReplaceAll) Then objDoc.Save End If objDoc.Close End If Next objWord.Quit

専門家に質問してみよう