お世話になっております。
word2013で、下記のようにネットで誰かが作成していた全角カタカナを半角カタカナに置換するマクロがあり、これにプラスして、全角英数字から半角英数字(数字とアルファベッドのみで記号等は不要)に置換できるようにししたいと思っています。
下記マクロのF.Text を
F.Text = "[0-9a-zA-Z" & ChrW(Val("&h30FA")) & "]{1,}"
このようにすれば、半角英数字に置換できましたが、さらにこれに半角カタカナの検索、置換も行いたいのですが、うまくいきません。
例えば、単純に2つを合わせて、
F.Text = "[ァ- 0-9a-zA-Z" & ChrW(Val("&h30FA")) & "]{1,}"
では、無理でした。
どうすれば、両方いけるでしょうか?多分可能ですよね?
とりあえず、今は、英数字置換用とカタカナ置換用を2つ作っておいて、片方の処理が終わったらcallでとばして、もう一方の置換に進むようにしたら一応できましたが、まとめれるならまとめたいです。
誰かが作ったものなので、私はF.Textの内容はよく分かりません。前半は、ワイルドカードで検索していることが分かったので英数字置換用に改造できましたが、後ろの & ChrW(Val("&h30FA")) & "]{1,}"は、何をしているのでしょうか?
この辺りも変更が必要なのでしょうか?
もし分かる方がいればよろしくお願いいたします。
Sub 全角カタカナを半角カタカナへ置換()
Dim F As Find
Dim Ans
Set F = Selection.Find
Call Target(F)
F.Text = "[ァ-" & ChrW(Val("&h30FA")) & "]{1,}"
Selection.HomeKey Unit:=wdStory
Do While F.Execute = True
With Selection
Ans = MsgBox(.Text & "を半角にしますか?", vbYesNoCancel)
If Ans = vbYes Then
.Words(1).Case = wdHalfWidth
.Collapse Direction:=wdCollapseEnd
ElseIf Ans = vbCancel Then
End
End If
End With
Loop
End Sub
Sub Target(F)
With F
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.MatchByte = False
.MatchFuzzy = False
.MatchWildcards = True
End With
End Sub
No.3ベストアンサー
- 回答日時:
No.2の回答にあるマクロ部分をそのままコピーすると長音部分が
間違っているので、正しく置換されません。
補足のものをコピーして再利用したので、「―-ヾ」にある長音
部分がユニコードの2015(全角ダッシュ)になっていますので、
それ以降の文字も対象にしてしまいます。
訂正したもの(長音に修正)
F.Text = "[0-9a-zA-Zァ-ワー]{1,}"
それと、半角にならないカタカナを含める意味がないので、
' ユニコードの&h30FA : 「ヲ゛」を含める場合
F.Text = "[0-9a-zA-Zァ-" & ChrW(Val("&h30FA")) & "ー-ヾ]{1,}"
は無意味ですので必要ないと思います。
(「ヰ~ヺ」及び「ヽ」と「ヾ」は半角にならないので)
No.2
- 回答日時:
「を」に濁点を付けた「ヺ」が検索対象の文章にあるのですか?
もしも不要なら、ヶを対象にしてはいかが。
F.Text = "[0-9a-zA-Zァ-ヶ―-ヾ]{1,}"
どうしても必要なら
' ユニコードの&h30FA : 「ヲ゛」を含める場合
F.Text = "[0-9a-zA-Zァ-" & ChrW(Val("&h30FA")) & "―-ヾ]{1,}"
で対応できると思います。
No.1
- 回答日時:
メッセージボックスで単語単位で確認しないと駄目なの?
単純に全角英数字と全角カタカナを半角文字にするなら、以下の
マクロでも可能です。
Sub 全角英数字及びカタカナを半角に()
Dim myRange As Range
Set myRange = ActiveDocument.Range(0, 0)
With myRange.Find
.Text = "[0-9a-zA-Zァ-ヾ]{1,}"
.MatchWildcards = True
Do While .Execute = True
myRange.CharacterWidth = wdWidthHalfWidth
myRange.Collapse wdCollapseEnd
Loop
End With
Set myRange = Nothing
End Sub
どうしても質問にあるマクロを使いたいのなら、F.Textの部分を
以下のように修正します。
F.Text = "[0-9a-zA-Zァ-ヾ]{1,}"
参考サイト
Word2010:ワイルドカードを使った文字種ごとの検索について
http://www.office-qa.com/Word/wd212.htm
[ワイルドカード]で指定する文字種の順番は、[記号と特殊文字]
ダイアログの順番で指定するのが基本です。
全角長音「ー」を意味するChrW(Val("&h30FA"))の部分も、Word
ならそのまま書いても問題なく判断されます。
数字→英字→カタカナの順番ですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
- その他(Microsoft Office) WordやExcelで英数字のみ半角または全角にしたい 6 2022/08/03 08:18
- Access(アクセス) Accessのテキストボックスの入力文字制限 1 2023/01/18 20:43
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) EXCELでの文字・数字入力の基本について教えてください。 2 2023/05/29 23:17
- デスクトップパソコン 40年間の悩み キーボードにおいて初期値として漢字ローマ字変換に設定する方法 8 2023/05/08 14:50
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- Excel(エクセル) 【マクロ】フォルダAからダBへファイルを、ファイルの更新日時の条件で、1つづつ移動するには? 3 2022/08/25 09:56
- Excel(エクセル) Excelで校閲をする方法はあるでしょうか(取扱説明書への掲載禁止用語の確認) 3 2022/06/11 22:51
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カンマを改行に変換する方法
-
カンマ( , )をタブに置換したい。
-
Excelで全角ハイフンを半角ハイ...
-
エクセル 置換又は関数でかっこ...
-
秀丸エディタで半角や全角スペ...
-
ワード (word ) 日本語の文字...
-
複数のスペースを1つのタブに...
-
Word:差し込み印刷時に文字列...
-
Excel : テキストボックス中の...
-
エクセルで濁点カナの変換方法...
-
エクセル重複削除で綺麗に削除...
-
Word 図表番号における半角の挿...
-
EXCEL VBAにて、WORDへ置換
-
文字列に含まれているダブルク...
-
Word2003で、囲み線の中だけ置...
-
エクセルの『検索と置換ボック...
-
エクセルの文字・数字の前後の...
-
数学 記号 sgn
-
ExcelのVBA 正規表現でタブを...
-
秀丸で余分なスペースを削除したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カンマを改行に変換する方法
-
カンマ( , )をタブに置換したい。
-
Excelで全角ハイフンを半角ハイ...
-
文字の列を揃えるには
-
エクセルの『検索と置換ボック...
-
エクセルで濁点カナの変換方法...
-
Word:差し込み印刷時に文字列...
-
秀丸で余分なスペースを削除したい
-
エクセル重複削除で綺麗に削除...
-
ワードで複数の文字を一括・連...
-
セルの文字列後ろのスペース削除
-
CSVファイルの任意の列をダブル...
-
1文字だけ置換したい
-
文字列に含まれているダブルク...
-
word 改行マークを印刷時に表示...
-
Excelで特定の文字以下を削除し...
-
エクセル 置換又は関数でかっこ...
-
複数のスペースを1つのタブに...
-
エクセルの「置換」で1行の部分...
-
【MS Office Word 2007】文章の...
おすすめ情報
ご回答どうもありがとうございました。
もし可能なら、・や・・・なども変換してしまうようなので、これらを除くことは可能でしょうか?英数字と全角カタカナを別々に指定していた時には、これらは変換の対象になっていませんでした。
リンク先にあるのを参考にして、ァ-ヺまで指定して、そこから・を飛ばして、―-ヾと指定する?のかなあと思いましたが、ヺを入力しても?と入力されてしまいました。
F.Text = "[0-9a-zA-Zァ-ヺ ―-ヾ]{1,}"
みたいなイメージだったんですが?
どうすればいいでしょうか?