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

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

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

そこで今回は、

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

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

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

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

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

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

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

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

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

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

FileFilterの使い方

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

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

サンプルコード:

実行結果:

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

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

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

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

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

実行結果:

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

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

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

サンプルコード:

実行結果:

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

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

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

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

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

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

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

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

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

まとめ

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

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

Excel VBAを最短で習得したい方へ

元々ITリテラシーの高い方やプログラムの学び方がわかっている方であれば、この記事通りに進めていけば、Excel VBAを独学で習得することができるでしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「なかなかやり遂げられ無い、挫折してしまった」
「時間が足りない」
「情報が少なくどう調べればいいかわからない」
「エラーを解決することができない」

このような悩みを抱えている方も少なく無いと思います。

  • もう挫折したくない
  • 本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい
  • 自分だけのカリキュラムで効率的に勉強したい
そんな方はお気軽に侍エンジニア塾までご相談ください。

お一人お一人に専属のインストラクターがつくので、より深くExcel VBAについて学習することできます。

まずは『無料体験レッスン』で、弊社のコンサルタントと一緒にあなた専用の学習方やカリキュラムを考えてみませんか?

Excel VBAならではの学習方法や、現役エンジニアから貴重なアドバイスを受けることができます。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta2_vba2

LINEで送る
Pocket

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

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

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

おすすめコンテンツ

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

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