スライドショースライドショー

【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:\Users\Siro\Desktop\ExcelVBA"
  
  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

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説