2019年8月11日スポンサーリンク[ファイルを開く]ダイアログボックスを表示して、ユーザーが選択したファイルを開く方法について説明します。以下の2つのメソッドを使用します。ApplicationオブジェクトのGetOpenFilenameメソッドWorkbooksコレクションのOpenメソッド今回は、[ファイルを開く]ダイアログボックスを用いてファイルを開くプログラム例とその説明[ファイルを開く]ダイアログボックスに表示する拡張子の種類・数の変更方法[ファイルを開く]ダイアログボックスで複数のファイルを選択する方法など基本的な内容から応用的な使い方まで詳しく説明していきます。Sub上で示したプログラムの大まかな説明は以下のようになります。これからこのプログラムがどのようにできているかを詳しく説明します。GetOpenFilenameメソッドで[ファイルを開く]ダイアログボックスを表示する[ファイルを開く]ダイアログボックスを表示する最も一般的な方法はApplicationオブジェクトのGetOpenFilenameメソッドです。【補足】ApplicationオブジェクトのGetOpenFilenameメソッド以外にもFindFileメソッドFindDialogメソッドDidlogsメソッドでも[ファイルを開く]ダイアログボックスを表示することができます。GetOpenFilenameメソッドはユーザーが指定したファイルのフルパス(絶対パス)を文字列で返します。戻り値はVariant型です。このプログラムではString型の変数を宣言していますが、Variant型で変数を宣言してもOKです。プログラムでは宣言した変数OpenFileNameにユーザーが指定したファイルのフルパスが格納されます。【例】[ファイルを開く]ダイアログボックスで「C:\Users\Desktop」にあるExcelファイル「テスト.xlsx」を選択した場合、変数OpenFileNameには、文字列『C:\Users\Desktop\テスト.xlsx』が格納されます。[ファイルを開く]ダイアログボックスに表示するファイルの種類は、GetOpenFilenameメソッドの引数「FileFilter」で指定します。引数「FileFilter」の書式は以下のようになります。ワイルドカード”引数「FileFilter」には、ファイルフィルタ文字列ワイルドカードの2種類の情報をペアにして、「,(カンマ)」で区切って指定します。ファイルフィルタ文字列とワイルドカードには以下の情報を記載します。ファイルフィルタ文字列[ファイルを開く]ダイアログボックス右下の[ドロップダウンリスト]に表示される文字列になります。[ファイルを開く]ダイアログボックスに表示されるファイルの拡張子が何なのかが分かるように、任意の文字列を指定します。ワイルドカード[ファイルを開く]ダイアログボックスに表示するファイルの拡張子を指定します。[ファイルを開く]ダイアログボックス右下の[ドロップダウンリスト]に表示される文字列の後ろに「()(括弧)」があります。その「()(括弧)」の中に指定したワイルドカードが表示されます。[ファイルを開く]ダイアログボックスに拡張子が「.xlsx」のExcelファイルだけを表示したい場合、引数「FileFilter」は以下のように記述します。引数「FileFilter」に指定する文字列全体を「"”(ダブルコーテーション)」で囲ってください。“ワイルドカード”上のようにファイルフィルタ文字列とワイルドカードを個別に「"”(ダブルコーテーション)」で囲むとエラーとなります。GetOpenFilenameメソッドだけではファイルを開くことはできないGetOpenFilenameメソッドの[ファイルを開く]ダイアログボックスでは、ユーザーが指定したファイルのフルパスを文字列で返すだけで、ファイルを開くことはできません。ファイルを開くためには、WorkbooksコレクションのOpenメソッドを用いる必要があります。GetOpenFilenameメソッドで「キャンセル」ボタンを押された時GetOpenFilenameメソッドでは、ユーザーが[キャンセル]ボタンを押すと「False」という値を返します。左上の[×]ボタンでダイアログボックスを閉じた場合でも「False」が返されます。Ifにおいて、ユーザーが[キャンセル]ボタンが押したか押さなかったかをIf文で分岐しています。[キャンセル]ボタンを押さなかった場合WorkbooksコレクションのOpenメソッドでユーザーが指定したファイルを開きます。[キャンセル]ボタンが押された場合MsgBoxを用いてメッセージを表示するようにしています。Subプログラム説明GetOpenFilenameメソッドの引数「FileFilter」にファイルフィルタ文字列とワイルドカードを記述することで、[ファイルを開く]ダイアログボックスで表示されるファイルの拡張子を選択することができます。*.docx“と記述することで、[ファイルを開く]ダイアログボックスで表示されるファイルの拡張子がWordファイル(*.docx)になります。Subプログラム説明GetOpenFilenameメソッドの引数「Title」を記述することで、[ファイルを開く]ダイアログボックスの左上に表示される文字列を変更することができます。Title:="ダイアログボックスの名前を変えられます"と記載すると、[ファイルを開く]ダイアログボックスの左上に表示される文字列は「ダイアログボックスの名前を変えられます」となります。引数「Title」を記述しない場合はデフォルトが設定されます。デフォルトは「ファイルを開く」です。引数「FileFilter」のワイルドカードを変更することで[ファイルを開く]ダイアログボックスに表示するファイルの拡張子の数を指定することができます。ワイルドカード”の書式となります。FileFilter:="Excelファイル,*.xlsx"のように記述します。このように記述すると、[ファイルを開く]ダイアログボックスに表示される拡張子は「.xlsx」の1つのみになります。ワイルドカード1;ワイルドカード2”の書式となります。1つのファイルフィルタ文字列に複数のワイルドカードを対応させるには、ワイルドカードを「;(セミコロン)」で区切って指定します。*.xlsm"のように記述します。このように記述すると、[ファイルを開く]ダイアログボックスに表示される拡張子は「.xlsx」と「.xlsm」の2種類になります。引数「FileFilter」のワイルドカードで「?」を用いることで[ファイルを開く]ダイアログボックスに表示するファイルの拡張子の数を複数にすることができます。FileFilter:=“全てのExcelファイル,*.xls?"と記述すると、[ファイルを開く]ダイアログボックスに表示される拡張子は「.xls」、「.xlsx」、「.xlsm」となります。Subプログラム説明[ドロップダウンリスト]に登録するファイルの拡張子を増やすことで、[ファイルを開く]ダイアログボックスに表示するファイルの拡張子を切り替えることができます。ワイルドカード」のペアを記述します。各ペアは「,(カンマ)」で区切って指定します。...”例えば、以下のように記述したとします。拡張子が「.xlsx」のファイルのみが[ファイルを開く]ダイアログボックスに表示されます。全てのファイルが[ファイルを開く]ダイアログボックスに表示されます。ワイルドカード」のセットが[ドロップダウンリスト]に表示されています。全てのファイル,*.*“の場合では[ドロップダウンリスト]には「Excelファイル(*.xlsx)」が表示されます。ワイルドカード」のセットを指定するにはGetOpenFilenameメソッドの引数「FilterIndex」を記述します。引数「FilterIndex」の書式は以下のようになります。ワイルドカード」のセットを記述した順に1,2,...となります。全てのファイル,*.*“,FilterIndex:=2と記述すると、[ドロップダウンリスト]には「全てのファイル(*.*)」が表示されるようになります。複数のファイルを同時に開くプログラムは以下の処理に関して便利になります。月ごとのファイルデータから年間のまとめデータを作る複数のファイルデータを1つのファイルにまとめる[ファイルを開く]ダイアログボックスから複数のファイルを開く方法は少し複雑になります。GetOpenFilenameメソッドの引数「MultiSelect」を使うことで、[ファイルを開く]ダイアログボックスから複数のファイルを選択できるようになります。引数「MultiSelect」の書式は以下のようになります。複数ファイル選択可能になります。引数MultiSelectがFalseの時1つのファイルしか選択できないようになります。ここで注意点があります。変数OpenFileNameはString型ではなくVariant型を選択してくださいこれは[キャンセル]ボタンを押されたときの処理で重要となります。変数OpenFileNameにはGetOpenFilenameメソッドの戻り値が入ります。この戻り値には選択したファイルのフルパスが配列として格納されます。変数OpenFileNameにはFalseが格納されます。ここで言いたいことは、ファイルを選択し[開く]ボタンを押した場合と[キャンセル]ボタンを押した場合で、変数OpenFileNameに入るデータの形が変わるということです。そのため、変数OpenFileNameはVariant型で宣言しています。次にIsArray関数を使って変数OpenFileNameが配列かどうかを調べます。IsArray関数の書式は以下のようになります。IsArray(引数)IsArray関数は引数として渡した変数が配列かどうかを調べます。戻り値にTrueを返します。戻り値にFalseを返します。今回のプログラムでは、[ファイルを開く]ダイアログボックスで選択したファイルのフルパスを変数OpenFileNameに入れるIsArray関数で変数OpenFileNameが配列かどうか調べる配列であれば、配列の数だけファイルを開く配列でなければ、メッセージを表示する。Eachの制御変数OpenFileNameTargetはVariant型を宣言しています。Eachの制御変数ではString型は使えないためです。そのためVariant型を宣言しています。Subプログラム説明GetOpenFilenameメソッドの[ファイルを開く]ダイアログボックスで開くフォルダはカレントフォルダ(カレントディレクトリ)になります。カレントフォルダとはユーザーが現在作業を行っているフォルダのことです。何かの作業をしていて、最後に開いていたフォルダがカレントフォルダになります。カレントフォルダではなく、任意のフォルダを開くためには、[ファイルを開く]ダイアログボックスを表示するプログラムの前に、ChDriveステートメントとChDirステートメントでカレントフォルダを移動する必要があります。スポンサーリンクスポンサーリンクTwitterShareGoogle+PocketHatenaLINEauthor関連記事Excel・VBA【2020年最新】Excelのショートカットキー全230個の一覧表!Excelには便利なショートカットが色々あります。...Excel・VBA【VBA】選択したセルを取得する『Selectionプロパティ』の使い方Selectionプロパティとはユーザーが選択しているセルを返すプロパティです。選択している範囲によってSelectionプロパティが返す値が変わります。...Excel・VBA【VBA】セルの大きさに合わせて図のサイズを変更する方法エクセルを使用している時、図の大きさを変更するのって面倒くさいですよね。今回、セルの大きさに合わせて図のサイズを変更するVBAを紹介します。毎回同じサイズに変更する時などに凄く便利なプログラムです。...Excel・VBA【Excel】文字サイズを縮小してセル内に収める方法セルに入力する文字数が多い場合、セル内に文字が収まりきらなくなり、すべての文字が表示されないことがあります。...Excel・VBA【VBA】セルの結合を行う『Mergeメソッド』の使い方Excel・VBAではMergeメソッドを使用することでセルの結合を行うことができます。AFFINGER5.。