Excel VBA ファイルを開くダイアログについて(2)ファイルを複数いっぺんに開くタイプのダイアログ

Excel マクロ、VBA

スポンサーリンク

はじめに

前回の記事で、Excel VBAでファイルを開くダイアログについて説明した。

それは、ファイルを1つだけ選んで開くものだった・・・ということなんだけど、1つだけってそんなの当たり前じゃんと思うかもしれない。

でも、ファイルを開くダイアログっていうのは、複数のファイルをいっぺんに選んで開けるタイプのダイアログも実はある。

普通にPCを使ってて、そんな複数ファイルをいっぺんに開くダイアログなんて、使う機会は少ないだろう。

Excel VBAにおいても通常は、ファイル1つ開くだけのダイアログで良いのだけどね。
でも複数いっぺんに開くタイプも使いこなせるようになれば、多くのExcelファイルを1まとめにして扱うなどできるようになり、マクロでやれる処理の幅が爆発的に広がる。

複数ファイルいっぺんに開けるダイアログでは次の動画のように、

  • ShiftキーやCtrlキーを押しながら各ファイルをクリックする
  • マウスで囲うように動かす

といった操作で、複数ファイルを選択できる。

ソースコード

では、サンプルのソースコードを示す。

ソースコードの解説

基本的な解説は前回しつこく述べたので、今回の説明は短めに切り上げる。

複数選択を許可するAllowMultiSelect

今回のキモ、複数のファイルをいっぺんに選択可能にする文言は、言わずもがな

    .AllowMultiSelect = True

だ。

Allowって聞き慣れない人も多いかもしれないが、Arrow(矢)じゃない。
許すとか許可するという意味だ。

だから、AllowMultiSelectというのは、複数選択MultiSelectの許可ってことで、それをTrueにするってことね。

このAllowMultiSelectについて前回はソースコード中に書いてなかったけど、それならデフォルト値のFalseがセットされて、複数ファイル選択は不許可ということだ。

私は、「特別な場合でない限り複数ファイル選択はしない」と自分に決めておきたいので、省略できるときはAllowMultiSelectを省略するようにしている。

省略しないほうが好みなら

    .AllowMultiSelect = False

と書けば良い。まあここは各人、好きなように。

選択されたファイルを配列に格納

ソースコード中で下記の部分だけど、

多分こういうサンプルを示してるサイトは、少ないと思う。

というのは普通、最後の
.SelectedItems(i)
の部分はそのままで扱い、イチイチ別の変数に代入したりはしてないんじゃないかなと。

でも私の考えとしては、たくさんのファイルが選んだうえ更に大量の処理を加えていくからには、さっさと変数(というか、配列というやつだけど)に入れてしまわないと気持ち悪いのだ。

実際、多くのサンプルでは複数ファイルを開いてから先の記述が短めなんだけど、私がやる場合はけっこう長めの処理を記述していくことが多いので、配列に入れてしまったほうが都合良くなるんだよね。

スポンサーリンク