Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー

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

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

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

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

#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
質問者

お礼

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

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

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

tomomo20
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

マクロの記録は出来るのかはわかりません。 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
質問者

お礼

Wendy02様 ご解答ありがとうございました。 頂きましたコードをVisual Basic Editorにペーストをし、 マクロの部分に「ReplaceFontWidh」と出ましたので、それを実行したのですが 「コンパイルエラー メソッドまたはデータメンバーが見つかりません」と エラーが出てしまいました。。コードの最初の1行目「Sub ReplaceFontWidh()」の部分が黄色になっています。せっかく教えていただいたのに申し訳ありません、コードの記述に関してほとんど知識がないもので…原因がわかりますでしょうか。

すると、全ての回答が全文表示されます。

関連するQ&A