エクセルVBAでダイアログボックスを表示させ複数ファイルを1度に開く方法

こんにちは~。「デザインもできるシステムエンジニア」のあつもり(@atumori17)です。今日も業務効率化のアイデアを発信していきますっ!

前回は「ダイアログボックスを使ってファイルを非表示で開く方法」を紹介しました。

エクセルVBAでダイアログボックスを使ってファイルを非表示で開く方法
ダイアログボックスを表示させてエクセルファイルを非表示で開く方法を紹介します。プログラムからエクセルファイルを開きたいけど、画面に表示させないでシート上のデータだけを取得したいという場合に役に立つ技です。Visibleプロパティを使うことでファイルを非表示にすることができます

今回は「ダイアログボックスを表示させ複数ファイルを1度に開く方法」を紹介します。複数のファイルを一度に読み込んで処理をすることができると色々と便利に使えます。例えば

  1. 月ごとの勤務時間管理表から年間の集計表を作る
  2. 複数ファイルの商品データをデータベースに一括登録する
  3. 複数のテキストファイルをエクセルファイルとして保存しなおす

というような使いかたができます。このように複数ファイルを一度に処理することができれば業務が劇的に効率化できるというわけです。すんばらしぃ~!

レクタングル大336×280

複数ファイルを一度に開くプログラムを作る

前回のプログラムを修正する

それでは実際にプログラムを作っていきます。

前回使用した「非表示でファイルを開く.xls」をコピーして「複数ファイルを開く.xls」を作成します。

標準モジュールにSubプロシージャ「OpenExcelFile」に次の段落で説明するコードを貼り付けます。

サンプルコードを貼り付ける

プロシージャ「OpenExcelFile」に下記のコードを貼り付けます。

プログラムコードの解説

続いてプログラムコードの解説をしていきます。重要なポイントに絞って説明していきます。全体の流れは以下のようになります。

  1. ファイル選択ダイアログボックスを表示させる
  2. 選択したファイルのパスを取得して配列に入れる
  3. キャンセルボタンが押されたらプログラムを終了させる
  4. 配列に入れたパスの数ぶんファイルを開く

MultiSelectプロパティで複数ファイル選択を可能にする

GetOpenFilenameメソッドの引数MultiSelectを使うことで、ダイアログボックスから複数ファイを選択できるようになります。

MultiSelect:=真(True)または偽(False)

引数MultiSelectにTrueを入れると複数ファイル選択可能になり、Falseを入れると1つのファイルしか選択できないようになります。

キャンセルボタンが押されたときの処理

さてここで注意しなければいけないポイントがあります。それはキャンセルボタンを押されたときの処理です。下記のコードを見てください。

プログラムコードでは8~9行目になります。

変数openFilePathにはGetOpenFilenameメソッドの戻り値が入ります。この戻り値には選択したファイルのパスが配列として格納されます。

しかしキャンセルボタンが押されたときはどうでしょう?その場合、Falseが格納されます。ファイルが選択された場合とキャンセルボタンを押したときでは、変数openFilePathに入るデータの形が変わるんですね。

そのため、変数openFilePathはバリアント型で宣言しておきます。

プログラムコードでは4行目になります。

IsArray関数を使って配列かどうかを調べる

次にIsArray関数を使って変数openFilePathが配列かどうかを調べます。

IsArray(変数)

IsArray関数は引数として渡した変数が配列かどうかを調べてくれます。配列の場合は戻り値にTrueを返し、そうでない場合はFalseを返します。

今回のプログラムの場合、次のようにしてIsArray関数を使っています。

  • ダイログボックスで選択したファイルのパスを変数openFilePathに入れる
  • IsArray関数で変数openFilePathが配列かどうか調べる
  • 配列であれば、配列の数ぶんファイルを開く
  • 配列でなければ処理しない

ここで1点注意ですが、For Eachの制御変数ptはVariant型を宣言しています。ptにはファイルのパス、つまり文字列が入ります。しかしFor Eachの制御変数でString型は使えないので、Variant型を宣言しているというわけです。

プログラムコードの解説は以上です。

ダイアログボックスから複数ファイルを開くプログラムの動作確認

それでは実際に出来上がったプログラムを動かしてみましょう。

ワークシートの「エクセルファイルを開く」ボタンを押します。

ダイアログボックスが表示されたら、任意のフォルダを開き複数ファイルをドラッグで選択し、開くボタンをクリックします。

一度に3つのエクセルファイルが開きました。

まとめ

いかがでしたか?今回の内容をまとめます。

  • GetOpenFilenameメソッドの引数MultiSelectを使うと複数ファイルを選択できるようになる
  • プログラムの処理によって変数の型が変わる場合はバリアント型を宣言しておく
  • IsArray関数を使うと変数が配列かどうか調べることができる

それではまた~。

レクタングル大336×280
レクタングル大336×280

シェアする

  • このエントリーをはてなブックマークに追加

フォローする