- 締切済み
WORDのワイルドカード置換について
WORDで、ワイルドカード[0-9]で半角数字を検索し(検索は出来ました)、これを全角数字に置換したいとき、置換後の文字列はどういう風に入力したらよいでしょうか。全角数字の表示形式が分かりません。[0-9]では出来ませんでした。 文字種の変換で行うしかないのでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 もとのマクロは、全角を半角にするためのものだったので、全角to半角という名前になっています。なるべく標準モジュールのほうがよいのですが、ThisDocument でも可能です。 Zenkaku2Hankaku "0", "9" 0 と 9 は、半角と半角。0と9 なら、全角と全角で かならず、範囲になるようにしてください。その部分に半角を入れれば、全角に、 全角を入れれば、半角に変換されます。 '-------------------------------------------------------------- Sub HenKanMainMacro() '必ず、引数は、範囲に囲まれていることが条件です。 Zenkaku2Hankaku "0", "9" End Sub Private Sub Zenkaku2Hankaku(ch1 As String, Optional ch2 As String, Optional blnShp As Variant) 'ch1 検索ワイルドカードのはじめ、ch2 検索ワイルドカードの終わり 'blnShp =False 半角へ/True 全角へ Dim myMsg As String Dim mWhat As String Selection.HomeKey Unit:=wdStory '文書の先頭に On Error GoTo Errmsg: With Selection.Find .ClearFormatting .Text = "" .Replacement.Text = "" .MatchFuzzy = False '設定をクリア If ch2 <> "" Then mWhat = "[" & ch1 & "-" & ch2 & "]{1,}" Else mWhat = ch1 End If If IsMissing(blnShp) Then If StrComp(StrConv(ch1, vbWide), ch1, vbBinaryCompare) = 0 Then blnShp = False Else blnShp = True End If End If While .Execute(FindText:=mWhat, _ Wrap:=wdFindContinue, MatchWildcards:=True) = True If blnShp = False Then Selection.Range.CharacterWidth = wdWidthHalfWidth 'ここで、文字を半角に変換。 Else Selection.Range.CharacterWidth = wdWidthFullWidth 'ここで、文字を全角に変換。 End If Wend End With Exit Sub Errmsg: MsgBox "エラー!: " & Err.Description, vbExclamation End Sub '--------------------------------------------------------------
- enunokokoro
- ベストアンサー率74% (3543/4732)
ワイルドカードを使用した場合、特定の半角数字を全角にするならば 置換だけで済みますが、[0-9]のように範囲を指定した場合は置換だけ では無理ですね。 Word2002以降ならば[検索]を使用して出来ます。置換と同じように検索 内容を指定します。 [見つかったすべての項目を強調表示する]にチェックを入れ[OK]します。 このままの状態で[文字種の変換]を使用して[半角]を指定して下さい。 Word2000以前の場合はマクロを使用するか、個々の数字を置換する方法 をしたほうが確実ですね。こういうものを使用すれば簡単かも↓。 http://www7.plala.or.jp/hikita/sidea/program/vb/mcrtool_wd.html