お世話になっております。
・ワードで算用数字を漢数字に変換する方法又はマクロを探しています。
・希望例: 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
マクロの修正を含めアドバイスをお願いします。
よろしくお願いします。
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:12
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/10 09:06
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/17 11:59
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/03 09:11
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 1 2022/03/25 17:03
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
EXCELのVBAでRange("A1:C4")を...
-
一つのTeratermのマクロで複数...
-
Excel VBAからAccessマクロを実...
-
メッセージボックスのOKボタ...
-
非表示の列をすべて削除するマクロ
-
エクセルに張り付けた写真のフ...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
ExcelVBAでPDFを閉じるソース
-
VBA アドインについて お詳しい...
-
TERA TERMを隠す方法
-
マクロで空白セルを詰めて別シ...
-
EXCELマクロでのThisisWor...
-
サクラエディタ・マクロ → VSCo...
-
エクセルマクロ自動更新
-
[初心者です]VBAで指定列か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルで別のセルにあるふり...
-
ExcelのVBA。public変数の値が...
-
エクセルに張り付けた写真のフ...
-
ExcelVBAでPDFを閉じるソース
-
EXCELのVBAでRange("A1:C4")を...
-
Excel VBAからAccessマクロを実...
-
TERA TERMを隠す方法
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
マクロ実行時、ユーザーフォー...
-
Excelのマクロについて教えてく...
-
ソース内の行末に\\
おすすめ情報