「word vba 文字種の変換 ダイアログ」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
Wordには、大文字と小文字の変換や半角と全角の変換などを行う、下図のような[文字種の変換]ダイアログが存在しています。
「word vba 文字種の変換 ダイアログ」
という検索は、この[文字種の変換]ダイアログを表示するVBA(Visual Basic for Applications)のコードを探している方によるものでしょう。
試しに、Wordで[文字種の変換]ダイアログを表示する操作をマクロ記録してみると、
Selection.Range.Case = wdUpperCase
という、ダイアログを表示せずにいきなり文字種の変換を行うコードが作られてしまいます。
文字種の変換をいきなり行うのではなく、[文字種の変換]ダイアログを表示するには、どういうコードにすればいいのか悩んでしまう方の気持ちはとても共感できます。
文字種の変換ダイアログを表示するサンプルマクロ
結論から申し上げると、以下のようなマクロで[文字種の変換]ダイアログを表示することができます。Application.Dialogs(wdDialogFormatChangeCase).Show
End Sub
Application.Dialogsプロパティに、定数・wdDialogFormatChangeCaseを指定して、Dialog.Showメソッドを実行すると[文字種の変換]ダイアログを表示できるのです。
どうやって文字種の変換ダイアログを表示するコードを見つけるのか
コード自体は、わかってしまえば難しくはありませんが、私はこのコードをこのまま憶えていたわけではありません。
Wordのマクロ記録機能と、VBE(Visual Basic Editor)のオブエクトブラウザ-を使って探しました。
Excel VBAでもWord VBAでも、VBAのコードをある程度書いていると、「Application.Dialogs(組み込み定数).Show」というオブジェクト式で、ダイアログを表示できることは憶えてしまいます。
問題は、Application.Dialogsプロパティの引数に何を指定したら[文字種の変換]ダイアログになるのか、です。
私は、文字種の変換をマクロ記録して作られた
Selection.Range.Case = wdUpperCase
というコードの「.Case」に注目しました。
おそらく[文字種の変換]ダイアログを指定する組み込み定数にも「case」という文字列が含まれているだろうと、推測したのです。
オブジェクトブラウザーで「case」を検索してみると、下図のように結構な量の候補がヒットします。
結構な量のプロパティや列挙や定数がヒットしてはいますが、探しているのはダイアログを表示する定数ですから、「Dialog」という文字列の含まれた列挙に必要としている定数は含まれていたはず、と朧げな記憶を探りました。(Word VBAでダイアログを頻繁にいじっている方なら列挙の名前までしっかりと憶えているでしょうけれど、私はこのあたりは曖昧な記憶で済ませています)
そう考えて眺めてみると、「Dialog」という文字列の含まれるWdWordDialog列挙に、wdDialogFormatChangeCaseという定数が存在していることがわかります。
試しに、
Application.Dialogs(wdDialogFormatChangeCase).Show
というコードを実行してみると、求めていた[文字種の変換]ダイアログが表示された、というわけです。
Word VBAでもExcel VBAでも、特に、マクロ記録機能で参考になるコードが作られないようなときに、オブジェクトブラウザーは必須のツールです。
- Newer:COUNTIF関数で空白以外のセルをカウントする
- Older:VBAで文字列と日付を比較するには-CDate関数
Home » ワードマクロ・Word VBAの使い方 » Word VBAで文字種の変換ダイアログを表示する