この記事ではOutlookでファイルダイアログを使用する方法について紹介します!
この記事でわかること
- Outlookマクロでファイルダイアログを使ったマクロを作成するための基本知識と初期設定がわかる。
- よく使うファイルダイアログのプロパティの使い方がわかる。
ファイルダイアログとは?(ファイルピッカー・Filepicker)
ファイルダイアログとは、上の図のようなファイル選択画面のことです。呼び方はFilepickerとかファイル選択ダイアログとかファイルピッカーとか呼ぶ人がいます。
ファイルダイアログを使うメリットは?
Human in the loopを実現できる!
Outlookマクロにファイルダイアログを用いることで、ユーザーに添付ファイルを選択してもらったり、使用するメールテンプレートを選択してもらったりすることができます。
例えば、とある「ファイルを添付してメールを送信するマクロ」があったとします。ファイルを添付する処理において添付するファイルの名前を直接記述しておいても良いのですが、それだとそのファイルだけを添付するマクロになってしまいます。ところが実務では添付すべきファイルはその都度名前が違うことも多いですよね?ファイルの数も1つだったり複数だったりまちまちの場合もあるかもしれません。
そんな時は、ファイルダイアログを使用する処理にすれば、ユーザに自由に添付ファイルを選択してもらうことが可能です。
ちなみにこのように、AIや業務自動化システムなどのプログラムの中に人の判断を介入させることをHuman in the loop:ヒューマンインザループというようです。かっこいいですよね。
ファイルピッカーを使用する方法は?
ファイルダイアログはOutlook VBAでは使えない?
もしかしたら、Excel VBAを使ったことがある方はファイルダイアログを使ったことがある方がいらっしゃるかもしれません。
Application.FileDialog(msoFileDialogFilePicker)
↑こんな文言のやつです。ところがOutlookでこの文言を記述してもファイルダイアログは起動しません。
なぜかというとOutlookにファイルダイアログがデフォルトでは機能として組み込まれていないんです。
え。ではどうするんですか?
ExcelのファイルダイアログをOutlookの中で呼び出して使います!
OutlookでExcelを「参照設定」する方法は?
Excelの機能をOutlookマクロから呼び出すには、VBE(VB Editor)で参照設定を行います。
Excel VBAでもExcelからメール送信するときはOutlookの参照設定をした方がもしかしたらいらっしゃるかもしれません。それと同じ要領です。
ちなみに参照設定をしないプログラムの書き方(レイトバインディング)もあるのですがわかりづらくおすすめできません。このブログでは参照設定を行ってからプログラムを書いていきたいと思います。
▲「Microsoft Excel 16.0 Object Library」にチェックを入れます。16.0の部分はPCにインストールされたExcelのバージョンにより数字が変わりますのでパソコンによっては違う表示がされるかもしれませんが問題はありません。
「Microsoft Excel Object Library」は、通常は一つしか存在しないかと思いますがExcelのバージョンが複数インストールされたPCでは複数表示されるかもしれません。その場合は数字の大きい方にチェックを入れておけば問題ないかと思います。
チェックを入れたら画面を閉じます。
これで設定はおわりです。一度設定してしまえば何度も設定する必要はありません。
ファイルダイアログを使うテストマクロを作成してみよう。
テストとして、ファイルダイアログで選択したファイルのフルパスをメッセージボックスに表示するという簡単なマクロを作成してみたいと思います。
▲マクロを実行するとファイルダイアログでユーザーが選択したファイルが図のような感じで表示されます。
今回はテスト用に新しく標準モジュールを追加します。モジュールの作成方法がわからない方やVBAが初めての方は下記の記事をご参考になさってください。
下記のコードをコードペインにコピペします。コードの解説は後程行います。
Sub FilePickerTest() '■1.Excelを呼び出す処理 Dim excelObject As Excel.Application Set excelObject = New Excel.Application excelObject.Visible = False 'Excelは非表示にする '■2.ファイルダイアログを設定して表示する処理 Dim fdFolder As Office.FileDialog Set fdFolder = excelObject.Application.FileDialog(msoFileDialogFilePicker) With fdFolder .InitialFileName = "%userprofile%\" '一番最初に開くフォルダのパスを記述します。 .AllowMultiSelect = True '複数ファイルの選択を許可する場合はTrue・しない場合はFalse .Title = "メールに添付するファイルを選択してください(複数選択可)。" .Filters.Add "Excels", "*.xls* ", 1 .Filters.Add "Images", "*.png; *.jpg; *.jpeg", 2 .Filters.Add "Documents", "*.doc*; *.pdf; *.txt ", 3 .Filters.Add "csv", "*.csv", 4 .Filters.Add "any", "*.*", 5 .FilterIndex = 1 'デフォルトのフィルターをindexで指定します。 .Show 'ファイルダイアログを表示します。 End With '■3.選択されたファイルに対する処理 Dim SelectedItem For Each SelectedItem In fdFolder.SelectedItems MsgBox ("あなたが選択したファイルは、" & SelectedItem & "ですね?") Next Set excelObject = Nothing End Sub
マクロを実行してみましょう。マクロはキーボードのF5キーを押下して実行できます。
▲マクロを実行するとファイルダイアログが表示されます。
▲選択したファイルのファイル名がメッセージボックスに表示されます。ファイルを2個選択した場合はメッセージボックスが2個表示されるかと思います。
VBAマクロのポイント解説
▲12行目まではお決まりの文句です。コピペで使いまわせばいいので特に覚える必要はないかなと思います。
▲14行目から25行目まではファイルダイアログのプロパティの設定です。プロパティを使えば例えばExcelファイル以外を選択できないようにしたりすることができます。よく使うプロパティの解説は別記します。
▲ユーザーが選択したファイルはSelectedItemsプロパティに格納されます。SelectedItemsはFor Eachループで1個ずつ取り出すとフルパスを文字列型で受け取ることができます。基本的にファイルへの操作はループの中で行います。
よく使うファイルダイアログ(FileDialog)のプロパティ
名前 | 説明 |
---|---|
AllowMultiSelect | 2つ以上のファイルの選択の可否を決定する。2つ以上のファイルを拒否する場合はFalse |
Filters | .Filters.add でファイル種類に制限をかけることができる。フィルターは複数追加することができる。 |
FilterIndex | .Fileters.addで複数のフィルターを追加した場合に、どのフィルターをデフォルトにするかを指定する。 |
InitialFileName | ファイル ダイアログ ボックスに最初に表示されるパスまたはファイル名を設定できる。 |
SelectedItems | ユーザが選択したファイル |
Title | ファイルダイアログのウィンドウの上のところに表示される文字列。「Excelファイルを選択してください」とか選択できるファイルを書いておくなどの使い方ができる。 |
選択できるファイルをExcelファイルだけに制限する。
With fdFolder .Filters.Add "Excels", "*.xls* ", 1 .FilterIndex = 1 'デフォルトのフィルターをindexで指定します。 .Show 'ファイルピッカーを表示します。 End With
選択できるファイルを1個だけに制限する。
With fdFolder .AllowMultiSelect = False .Show 'ファイルピッカーを表示します。 End With
ファイルダイアログを使った実用的なマクロ
ファイルダイアログのリファレンス
詳細の仕様についてはMicrosoft の公式ドキュメントを確認してください。
まとめ
以上ファイルダイアログの解説でした。
このブログではRPA・ノーコードツール・VBA/GAS/Pythonを使った業務効率化などについて発信しています。
参考になりましたらブックマーク登録お願いします!
Power Automate学習教材
▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。
▲Power Automate for Desktopの基本をしっかり学習するのにオススメです。この本の一番のメリットはデモWebシステム・デモ業務アプリを実際に使ってハンズオン形式で学習できる点です。本と同じシステム・アプリを使って学習できるので、本と自分の環境の違いによる「よく分からないエラー」で無駄に躓いて挫折してしまう可能性が低いです。この点でPower Automate for desktopの一冊目のテキストとしてオススメします。著者は日本屈指のRPAエンジニア集団である『ロボ研』さんです。
▲Power Automate クラウドフローの入門書です。初心者の方には図解も多く一番わかりやすいかと個人的に思っています。
Microsoft 365/ Power Automate / Power Platform / Google Apps Script…
▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります。頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。