【VBA入門】ファイルを選択のためのGetOpenFilename関数とは

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、VBAでファイル選択ダイアログを使ってファイルを選択する方法を知っていますか?データを取り込む処理を作る場合など、ファイルを指定して処理を動かしたいときにとても便利です!

そこで今回は、

  • GetOpenFilenameメソッドを使ってファイルを選択する方法

といった基礎的なことから、

  • GetOpenFilenameメソッドを使ったサンプルコード
  • データ取り込み機能を作るときに覚えておくと便利な知識とは

といった応用的な方法まで、徹底的に解説します!

GetOpenFilenameメソッドを使ってファイルを選択する方法

はじめに、GetOpenFilenameメソッドの基礎的な使い方について解説します。GetOpenFilenameメソッドを使うと、つぎのようなファイル選択ダイアログを使うことができます。

データ取り込み・ファイル削除など、ファイルを指定した処理を作りたいときに使います。GetOpenFilenameメソッドは、次のように使います。

Application.GetOpenFilename(FileFilter, FilterIndex, Title, MultiSelect)

プロパティごとの使い方一覧:

Noオプション意味
1FileFilterファイルの種類(拡張子)の指定ができる
2FilterIndexFileFilterで指定したフィルタ文字列の中で、最初に表示する種類を番号で指定できる
3Titleダイアログのタイトルを変更できる
4MultiSelectファイルの複数選択可に変更ができる(Trueが複数選択可)

FileFilterについては少しわかりづらいので、補足しますね。

FileFilterの使い方

FileFilterは、ファイルを開くときに選択する拡張子のリストを追加することができるオプションです。

「表示名 , *.拡張子」を1つのセットとして、指定します。.xlsxと.csvの拡張子のファイルを選択できるようにする場合は、次のような書き方になります。

サンプルコード:

Sub Test()
  Dim strFilePath As String
  strFilePath = Application.GetOpenFilename(Filefilter:="Excelブック,*.xlsx,CSVファイル,*.csv")
End Sub

実行結果:

「Filefilter:="Excelブック,*.xlsx,CSVファイル,*.csv"」と指定することで、「.xlsx」「.csv」の拡張子を指定したファイルを開くリストを2つ表示しています。このように、ファイルのタイプを拡張子で指定するリストを設定することができます。

フォルダを開く初期位置を変更する方法

GetOpenFilenameメソッドはそのまま使うと、マクロを実行しているフォルダが初期値として開かれてしまいます。そのため、ファイル選択画面で最初に開くフォルダを変更したい場合は、ChDir関数でフォルダの位置を変更するのがおすすめです!

GetOpenFilenameメソッドでファイル選択ダイアログを開く前に、ChDir関数でフォルダパスを指定しておくことで、指定したフォルダでファイル選択ダイアログを開くことができます。ChDir関数の使い方はつぎのとおりです。

ChDir関数の使い方サンプル:

Sub Test()
  'フォルダ位置移動
  ChDir "C:UsersSiroDesktopExcelVBA"
  
  Dim strFilePath As String
  strFilePath = Application.GetOpenFilename(Filefilter:="Excelブック,*.xlsx,CSVファイル,*.csv")
End Sub

実行結果:

このように、簡単にフォルダの初期位置を変更することができます!

GetOpenFilenameメソッドを使ったサンプルコード

次に、サンプルコードをもとに、具体的な使い方を解説します。ファイル選択後に指定したファイルを削除するサンプルコードです。

サンプルコード:

Sub Test3()
  'ファイルパスを取得
  Dim strFilePath As String
  strFilePath = Application.GetOpenFilename(Filefilter:="Excelブック,*.xlsx,CSVファイル,*.csv")

  '取得したファイルを削除
  Kill strFilePath

  '削除完了メッセージ表示
  msgbox strFilePath & vbcrlf & "の削除が完了しました。"

End Sub

実行結果:

このように、GetOpenFilenameメソッドを使って選択したファイルを使って、簡単に処理を作ることができます。ちなみに、サンプルで使ったKillステートメントでファイルを削除する方法、MsgBox関数を使ってメッセージを表示する方法については、以下記事で詳しく解説しています。

気になる方は、ぜひ見てみてくださいね!

【ExcelVBA入門】Killステートメントでファイルを削除する方法とは
更新日 : 2019年9月1日
【Excel VBA】MsgBoxでメッセージボックスを表示する方法
更新日 : 2019年4月25日

補足:データ取り込み機能を作るときに覚えておくと便利な知識とは

ファイルを指定して処理を作るときは、ファイルの削除以外にも、別のブックやCSVファイルからデータを取り込みたいときもありますよね。そのため、ファイル取り込み処理を作るための知識を合わせて覚えておくのがおすすめです!

ユーザーフォーム、QueryTablesメソッドを使えば簡単にデータインポートツールを作ることができます。

ユーザーフォームで作った画面サンプル:

画面を作るためのユーザーフォームの使い方、ファイルを高速にインポートするためのQueryTablesメソッドの使い方については以下で詳しく解説しているので、気になる方は見てみてくださいね!

【VBA入門】ユーザーフォームの使い方(テキスト表示、カレンダー)
更新日 : 2019年4月22日
【ExcelVBA入門】QueryTablesメソッドで高速にファイルを読み込む方法
更新日 : 2019年5月23日

まとめ

今回は、ファイル選択ダイアログを使うためのGetOpenFilenameメソッドの使い方を解説しました。別のCSV、Excelなどのファイルからデータをインポートするケースはよくあります。

今回解説した方法はどれも簡単なので、ぜひ使ってみてくださいね!

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。
Webアプリ、業務アプリ開発において、要件定義、設計、インフラ、製造、テスト、運用保守など、様々な経験あり。
また、侍ブログ編集部として、これまでに200記事以上の記事を執筆。
現在はフリーランスエンジニア兼テックライターとして活動中。