トップページ

#16_4 組み込みダイアログボックス

ダイアログボックスを開いてみよう

応用的な内容が続きますが、今回はExcelのダイアログボックスを開いて特定の処理を実行してみましょう。

第0章で学んだように、マクロの記録には結果は記録されますが、その過程は記録されませんでした。つまりダイアログボックスでどんな設定をしたかは記録されますが、「ダイアログボックスを開く」という操作は記録されません。

マクロの記録では不可能だったことも、Dialogsプロパティを使うことでVBAでは可能になります。

このDialogsプロパティの引数に値を指定することで、どのダイアログボックスを開くかを決めることができます。一例をしたに示します。

Excel VBAでは250以上のダイアログボックスが利用可能です。各ダイアログボックスに対応する定数はヘルプの「XlBuiltInDialog列挙」を参照してください。

対応するダイアログボックス
xlDialogOpen [ファイルを開く]ダイアログボックス
xlDialogSaveAs [名前をつけて保存]ダイアログボックス
xlDialogPageSetup [ページ設定]ダイアログボックス
xlDialogPrint [印刷]ダイアログボックス
xlDialogOptionsView [Excelのオプション]ダイアログボックス

ダイアログボックスを表示するにはユーザーフォームの時と同じくShowメソッドを使います。例えば[Excelのオプション]ダイアログボックスを表示させる場合には以下のように記述します。

Application.Dialogs(xlDialogOptionsView).Show

Showメソッドの戻り値で条件分岐

ではダイアログボックス表示の練習のついでに、Showメソッドの戻り値を用いた条件分岐の方法を見ていきましょう。

Showメソッドは[キャンセル]ボタンがクリックされるとFalse、それ以外のボタンがクリックされるとTrueを返します。それを踏まえた上で、以下のマクロを見てみましょう。

このように、Showメソッドを利用してダイアログボックスの条件分岐処理を行うことができます。

GetOpenFilenameメソッド

Showメソッドでは選択されたボタンが何なのかを取得するのみで、例えば[ファイルを開く]ダイアログボックスで具体的にどのファイルを選択したのかを取得できません。

また、下記のようにテキストファイルを選択して開こうとした場合、[テキストファイルウィザード]ダイアログボックスが表示されてマクロが中断してしまいます。

そこで、テキストファイルウィザードを起動することなく、ファイル名を取得するためにGetOpenFilenameメソッドが役立ちます。

ただし、GetOpenFilenameメソッドはファイル名を取得するだけで、ファイルそのものは開きません。

ファイルを開くにはWorkbooksオブジェクトのOpenTextメソッドを使って以下のように記述する必要があります。

実行結果は以下のようになります。OpenTextメソッドについては次の章で詳しく解説します。GetOpenFilenameメソッドでは、ファイルをカンマ(.)の後に続く拡張子で抽出し、複数のファイル拡張子で抽出するときにはセミコロン(;)で区切ります。