デスクワークを超絶快適にするおすすめギアたち詳しく見る

【初心者向け】Outlook VBAでファイル選択ダイアログを使用する方法!

ぽこがみさま

この記事ではOutlookでファイルダイアログを使用する方法について紹介します!

この記事でわかること

  • Outlookマクロでファイルダイアログを使ったマクロを作成するための基本知識と初期設定がわかる。
  • よく使うファイルダイアログのプロパティの使い方がわかる。
目次

ファイルダイアログとは?(ファイルピッカー・Filepicker)

Outlook VBA マクロ ファイルダイアログ

ファイルダイアログとは、上の図のようなファイル選択画面のことです。呼び方は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の参照設定をした方がもしかしたらいらっしゃるかもしれません。それと同じ要領です。

じょじお

ちなみに参照設定をしないプログラムの書き方(レイトバインディング)もあるのですがわかりづらくおすすめできません。このブログでは参照設定を行ってからプログラムを書いていきたいと思います。

STEP
「ツール」>「参照設定」をクリックします。
Outlook VBA マクロ ファイルダイアログ
STEP
「Microsoft Excel Object Library」にチェックを入れます。
Outlook VBA マクロ ファイルダイアログ

▲「Microsoft Excel 16.0 Object Library」にチェックを入れます。16.0の部分はPCにインストールされたExcelのバージョンにより数字が変わりますのでパソコンによっては違う表示がされるかもしれませんが問題はありません。

「Microsoft Excel Object Library」は、通常は一つしか存在しないかと思いますがExcelのバージョンが複数インストールされたPCでは複数表示されるかもしれません。その場合は数字の大きい方にチェックを入れておけば問題ないかと思います。

チェックを入れたら画面を閉じます。

STEP
参照設定完了です。

これで設定はおわりです。一度設定してしまえば何度も設定する必要はありません。

ファイルダイアログを使うテストマクロを作成してみよう。

STEP
作成するマクロを確認します。

テストとして、ファイルダイアログで選択したファイルのフルパスをメッセージボックスに表示するという簡単なマクロを作成してみたいと思います。

Outlook VBA マクロ ファイルダイアログ

▲マクロを実行するとファイルダイアログでユーザーが選択したファイルが図のような感じで表示されます。

STEP
標準モジュールを追加してわかりやすい名前を付けます。

今回はテスト用に新しく標準モジュールを追加します。モジュールの作成方法がわからない方やVBAが初めての方は下記の記事をご参考になさってください。

STEP
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
STEP
マクロを実行します。

マクロを実行してみましょう。マクロはキーボードのF5キーを押下して実行できます。

Outlook VBA マクロ ファイルダイアログ

▲マクロを実行するとファイルダイアログが表示されます。

Outlook VBA マクロ ファイルダイアログ

▲選択したファイルのファイル名がメッセージボックスに表示されます。ファイルを2個選択した場合はメッセージボックスが2個表示されるかと思います。

VBAマクロのポイント解説

Point
Outlook VBA マクロ ファイルダイアログ

▲12行目まではお決まりの文句です。コピペで使いまわせばいいので特に覚える必要はないかなと思います。

Point
Outlook VBA マクロ ファイルダイアログ

▲14行目から25行目まではファイルダイアログのプロパティの設定です。プロパティを使えば例えばExcelファイル以外を選択できないようにしたりすることができます。よく使うプロパティの解説は別記します。

Point
Outlook VBA マクロ ファイルダイアログ

▲ユーザーが選択したファイルはSelectedItemsプロパティに格納されます。SelectedItemsはFor Eachループで1個ずつ取り出すとフルパスを文字列型で受け取ることができます。基本的にファイルへの操作はループの中で行います。

ファイルが選択されなかった場合は、For Eachループの中の処理がスルーされるだけでエラーにはなりません。

よく使うファイルダイアログ(FileDialog)のプロパティ

名前説明
AllowMultiSelect2つ以上のファイルの選択の可否を決定する。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学習教材

Power AutomateをKindleで学びたい方はコチラ

▲Kindleと紙媒体両方提供されています。デスクトップフロー、クラウドフロー両方の解説がある書籍です。解説の割合としてはデスクトップフロー7割・クラウドフロー3割程度の比率となっています。両者の概要をざっくり理解するのにオススメです。

Power Automate for Desktopの基本をしっかり学習するのにオススメです。RPA界隈では有名なRPAエンジニア集団である『ロボ研』さんが監修されている解説書です。テスト用の業務Webシステム/デスクトップ業務アプリを使いながら実践形式で学習できる点が一番のメリットかなぁと思います。

Power Automate クラウドフローの入門書です。日本語の解説書は数少ないのでレアかと思います。変数の解説から代表的なアクションの解説がされているので初心者におすすめの本です。

Microsoft 365/ Power Automate / Power Platform / Google Apps Script…

Power Automateを動画で学びたい方はコチラ

▲Udemyで数少ないPower Automateクラウドフローを主題にした講座です。セール時は90%OFF(1200円~2000円弱)の価格になります頻繁にセールを実施しているので絶対にセール時に購入してくださいね。満足がいかなければ返金保証制度がありますので安心してご購入いただけます。

この記事が気に入ったら
フォローしてね!

シェアしてくれたらウレシイ(·:゚д゚:·)
  • URLをコピーしました!
  • URLをコピーしました!
目次
閉じる