解決済み

Wordで文字種変換(全角→半角)のマクロ

  • 困ってます
  • 質問No.6368800
  • 閲覧数1645
  • ありがとう数4
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 97% (33/34)

MacでWord2004を使用しています。
メニューの「書式」→「文字種の変換」→「全角/半角オプション」で「半角に変換する」を
選ぶとテキストで全角の部分が半角に変換できるのですが、この一連の動作をマクロで記録し、それを実行しても何も起こりません。この動作はマクロで記録できないのでしょうか?
どなたかお教えいただけますと幸いです。よろしくお願いいたします。

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

  • 回答No.3

ベストアンサー率 57% (3570/6233)

#1の回答者です。

#2ののお礼に出てくる記録マクロを見る限り、WordBasic が出てきているようですが、全ドキュメントを半角に変換するというのは、まずありえないと思います。

ただ、.FormatChangeCaseFareast は記録マクロに出てくるのかは知りませんが、そういうコマンドMSDNで(WordBasicでは関数)存在は確認していますが、コマンドとしては動かないはずですから、.FormatChangeCaseに、以下の引数を使うはずです。

5が半角
6が全角

後は、コマンドボタンに以下のマクロを登録すれば良いのではありませんか?
変換したい部分をマウスで選択して、ボタンをクリックすればよいと思います。

Sub hankaku()
   WordBasic.FormatChangeCase Type:=5
End Sub

もともと、何を半角にするという対象が明らかにされていませんので、#1で書いたマクロ自体は、無意味かもしれません。対象が決まっていないものに対しては、マウス選択すればよいわけで、おっしゃるように、コマンドを短縮する目的なら、既存のツールボタンをツールバーに貼りつけてもよいと思います。

ツール--ユーザー設定--コマンド--分類の中の「すべてのコマンド」
コマンドの中の「FormatChangeCase」を選択して、ツールボタンにドラッグすればよいです。他ダイアログまでは出せるようになります。

なお、Mac Office 2004は、VBAは使えるはずですが、

>コードの最初の1行目「Sub ReplaceFontWidh()」の部分が黄色になっています。
というエラーはこちらでは、分かりません。たぶん、VBAは、正しくVBAが動く状態ではないように思われますので、こちらでは、最初からの設定のような気がしますが、それはこちらでは不可能です。

#1のコードには問題ないはずですが、エラーの発生する可能性を見つけましたので、それは提示しておきます。

 .MatchFuzzy = False '←MatchWildcarsの前にをいれたほうがよいです。
 .MatchWildcards = True 

基本的には、ThisDocument モジュールか、そのDocument の標準モジュールに登録することを想定されています。Normal.dot に登録する場合は、ファイルが書き換えられるようになっているか、チェックしたほうがよいはずです。
お礼コメント
tomomo20

お礼率 97% (33/34)

Wendy02様
重ね重ねすみません、丁寧なご解答、真にありがとうございます。
お教えいただいた
Sub hankaku()
   WordBasic.FormatChangeCase Type:=5
End Sub
を実行したところ「実行時エラー’159’: いずれかのフィールドの値が大きすぎます」と出てしまいました。が、Windows XPのWord2003で試したところ、出来ました!まさに望み通りのものでした。ありがとうございます!!
出来なかった原因がわからないのですが…MacとWindowsでは違うのでしょうか。。Windowsで出来てMacで出来ない事が割とあるように感じます…。
基本作業はMacなのですが、Windowsの担当にwordファイルを渡し、Wendy02にお教えいただいた方法を教え、効率化を図ることができました。本当にありがとうございました!
投稿日時 - 2010-12-08 20:44:13

その他の回答 (全2件)

  • 回答No.2

ベストアンサー率 28% (4481/15958)

他カテゴリのカテゴリマスター
範囲選択が行われて無いか、不適当では無いですか。Selection.・・からマクロが始まっているとか。
Selection.WholeStory(全文選択の意味ですが。)をマクロの最初に入れてみて実行してどうなりますか。
エクセルのようにセルと番地が明確な仕組みでなくて、ワードは範囲選択が色々ありプログラムの制御は難しい場合も多いので、人間側の操作に範囲選択を残さざるをえないこともあろう。
お礼コメント
tomomo20

お礼率 97% (33/34)

imogasi様 ご解答ありがとうございました。
私の記録したマクロのコードを見ましたら
Sub hankaku()
Selection.WholeStory
WordBasic.FormatChangeCaseFareast Type:=0
End Sub
となっており、imogasi様のおっしゃるようにSelection.WholeStoryは最初にきているのですが、実行しても何もおきない状態となっております。
やはり手動でテキストを全選択し、メニューの「書式」→「文字種の変換」→「全角/半角オプション」で「半角に変換する」しかないのでしょうか。。
ワードはなかなかプログラムの制御は難しいのですね。勉強になりました。ありがとうございます。
投稿日時 - 2010-12-08 10:12:05
  • 回答No.1

ベストアンサー率 57% (3570/6233)

マクロの記録は出来るのかはわかりません。

FindChar = "[0-9]{1,}" '検索のワイルドカードを入れる

数字の半角 意味:全角の0から9までを、ひとつ以上のあるものを検索する
-半角でつなぐ時には、必ず、文字コードが小さいものから大きなものになるようにしてください。文字コードは、Unicodeですから、間違えないようにしてください。

ワイルドカード
"[0-9]{1,}" <--半角[全角0 半角- 全角9 半角] 後は半角{1,}
検索して、該当した物を

'//
Sub ReplaceFontWidth()
Dim FindChar As String
Selection.HomeKey Unit:=wdStory
FindChar = "[0-9]{1,}" '検索のワイルドカードを入れる

If FindChar = "" Then MsgBox "文字列を入れてください。": Exit Sub
With Selection.Find
  .ClearFormatting
  .Text = FindChar
  .Forward = True
  .Wrap = wdFindContinue
  .Format = False
  .MatchCase = False
  .MatchWholeWord = False
  .MatchSoundsLike = False
  .MatchAllWordForms = False
  .MatchWildcards = True
  Do While .Execute
     Selection.Range.CharacterWidth = wdWidthHalfWidth
     Selection.Collapse wdCollapseEnd
  Loop
 End With
End Sub
お礼コメント
tomomo20

お礼率 97% (33/34)

Wendy02様 ご解答ありがとうございました。
頂きましたコードをVisual Basic Editorにペーストをし、
マクロの部分に「ReplaceFontWidh」と出ましたので、それを実行したのですが
「コンパイルエラー メソッドまたはデータメンバーが見つかりません」と
エラーが出てしまいました。。コードの最初の1行目「Sub ReplaceFontWidh()」の部分が黄色になっています。せっかく教えていただいたのに申し訳ありません、コードの記述に関してほとんど知識がないもので…原因がわかりますでしょうか。
投稿日時 - 2010-12-08 09:55:19
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ