動画でExcel メールに個別の添付ファイルを添付して送信、VBAでOutlook操作④
動画版「マクロ講座OUTLOOK操作編」です。
98回のマクロ講座では、メールに添付するための個別の PDF ファイルを、シートから作成して指定したフォルダに保存しました。
今回は、その PDF ファイルをフォルダーの中から、送信する宛先と同じ人へ送るPDFを探して作成したメールに添付するというコードを追加したいと思います。
そのコードはすでに作成したsendmail と言うマクロに追加するわけです。
しかしそれは、本体のマクロに新たな操作を追加するというコード、なのでマクロを部品として別に作って Call ステートメントで呼び出すことにします。
操作の流れですが、添付用の PDF をメールに添付するには、まずオブジェクトを作る必要があります。
メールに添付されるオブジェクトですね。
これは”編集 as Outlook.attachment” アタッチメントコレクションとして宣言します。
(サンプルファイルは、こちらです。 メールに個別の添付ファイルを添付して送信、VBAでOutlook操作④、サンプル99回)
メールに PDF を添付するには、次のような手順で行います。

最初にメールに添付するためのオブジェクトを作成します。変数名としては、attachFile,attachObj などを使うとわかりやすいです。

それをメールに追加するには、attachFile.Attachments.Add("ファイル名")

これをコードにしていくと、

Dir関数は、指定したパターンまたはファイル属性に一致するファイル、ディレクトリ、フォルダーの名前、またはドライブのボリューム ラベルを表す String を返します。
つまりDir関数は、引数で指定したフォルダ内にあるファイルを探してくれるということです。
Dir [ (pathname, [ attributes ] ) ]
ファイル名はフルパスで指定してやる必要があります。
そのファイル名をどのようにして見つけるかというと、Dir関数を使います。
その方法を説明していきます。

引数のPathnameにフォルダ名とファイル名を指定して、探してやります。Attributesは属性で省略が可能です。
Dim filename As String
filename = Dir(ThisWorkbook.Path & "\pdf\" & key & "*")

関数ができたので、メインのマクロを実行してみましょう。

最初のメールを1つ作成したところでブレークポイントを入れておきました。メールにPDFが添付されているのが確認できます。

残りは全部F5キーで実行してしまいます。
すべてのメールにPDFがその送り先の氏名で作成されて、添付されていることが確認できます。

ExcelVBAでOUTLOOKのオブジェクトを操作するには、このOUTLOOK操作シリーズの初回で説明したように、OUTLOOK VBA
のライブラリファイルへの参照設定を行う必要があります。
Visual Basic Editor のメニュー、ツールから参照設定をクリックして以下のように、参照設定ダイアログを表示させてください。
図では、Microsoft Outlook 16.0 Object Libraryにチェックが入っていますが、このバージョンは操作するOutlookのパージョンに対応した番号になっています。
また参照設定は、ブックごとに行う必要があります。
