【エクセルVBA】FileDialogプロパティで任意のフォルダの画像をまとめてシートに貼り付ける方法

★気に入ったらシェアをお願いします!


excel,vba,dialog,任意,フォルダ,指定,eyecatch皆様こんにちは、ノグチです。

前回は、ShapesコレクションのAddPictureメソッドとFileSystemオブジェクトを使って、フォルダにある画像ファイルを一括でシートに貼り付ける方法をご紹介しました。

しかし前回ご紹介したコードでは、コードの中に操作対象のフォルダパスが直接書き込まれていましたから、他のフォルダ構成になってしまうと、このコードは使えなくなってしまいます…

ならば折角のコードがその場限りになってしまわないよう、汎用化してしまおう!

ということで、今回はFileDialogプロパティで、任意フォルダの画像をシートにまとめて貼り付ける方法をご紹介します!

コードの使いまわしができるようにすることのメリット

まず、汎用化と言っても特に難しいことをするわけではありません。

作ったコードを、他の対象ファイルであったり、フォルダ階層であったりした場合にも使えるように、コードを見直して『使いまわし』ができるようにするだけです。

汎用化をすることによって、ぱっと思い浮かぶメリットとしてはこちら。

  • フォルダやファイル名が変わっても、コードを修正することなくツールを利用できる
  • 修正が必要になった場合、影響範囲が分かりやすい
  • コードが短文になることが多く、読みやすい
  • 他のツールにもコードを使いまわしやすい

他にもメリットはありますが、こんなところでしょうか。

前回のおさらいと見直すコードの例

では、前回の記事で使用したコードのフォルダ指定部分を、FileDialogプロパティを使って汎用化していきましょう。

前回のコードはこちら。


エクセルブックと同じ階層にある、「images」フォルダに格納されているファイルを、順番にシートに貼り付けるという内容のコードでした。

画像ファイルをシートに貼り付けるという動作は問題ないのですが、このままでは画像を格納したフォルダの名前や階層が限られてしまいます。

FileDialogプロパティで任意のフォルダを操作対象にしてしまいます。

ダイアログで任意のフォルダを指定する方法

FileDialogプロパティでフォルダ選択ダイアログを表示させる

ここで使うのは、ApplicationオブジェクトのFileDialogプロパティです。

FileDialogという名前の響きから、ファイルしか選べないのでは?とお思いでしょうか。

ご安心あれ、FileDialogプロパティのパラメーターにmsoFileDialogFilePickerをセットすれば、ちゃんとフォルダも選択できるのです。

 このFileDialogプロパティについては下記記事で説明されていますので、併せてご覧ください。

エクセルVBAでFileDialogオブジェクトを使ってファイル選択ダイアログを開く
エクセルVBAでファイルを開く作業を自動化する方法についてシリーズでお伝えしています。今回は、エクセルVBAでFileDialogオブジェクトを使ってファイル選択ダイアログを表示させる方法です。

Showメソッドでフォルダ選択ダイアログを表示させる 

まずはFileDialogオブジェクトのShowメソッドで、フォルダ選択のダイアログを表示させるようにします。

すると、こんなダイアログが表示されるようになります。

excel,vba,dialog,フォルダ選択画面

用意した変数に取得したフォルダパスをセットする

次にApplicationオブジェクトのFileDialogプロパティを使って、FileDialogオブジェクトを取得しましょう。

FileDialogオブジェクトで取得したフォルダパスを格納するための変数を宣言しておいて…

FileDialogオブジェクトのSelectedItemsプロパティには、ユーザーがフォルダ選択のダイアログで選択したフォルダパスが格納されているので、これを定義しておいた変数にセットします。

コード内のフォルダパス部分を変数に置き換える

ついでに、Withを使って、コードをくくってしまいましょう。

あとはこの変数を、For Each ~.GetFolder().Filesの()内と置き換えるだけ

するとこんなコードになります。

これで、ユーザーが任意に選択したフォルダ内の画像を、シートにまとめて貼り付けることができるようになりました。

これなら画像ファイルの名前を変更したり、フォルダの階層を変更する必要もありません

まとめ

今回は、任意フォルダの画像をシートにまとめて貼り付ける方法をご紹介しました。

はじめの方で言ったような汎用化、といっても、ご覧の通りコードの一部を足したり置き換えたのみで、ただ『使いまわし』ができるようにしただけ。

でも折角作ったコードなら、使いまわせるようにしてしまいたいですよね。

この機会に、お手元のコードの見直しをしてみてはいかがでしょうか。

それでは、最後までお読みいただきありがとうございました!


The following two tabs change content below.

ノグチ

元製造子会社SE、ERPパッケージシステムコンサルタント(販売管理、購買管理、生産管理、設備管理他)。 業務システム保守・導入両方やった経験をお伝えすることで、少しでもシステムや手作業に悩まされる人が減ればいいなぁ、楽にお仕事してもらえたらいいなぁと日々夢見ております。