top of page
検索

ExcelでVBA、Outlookでメール自動送信(Attachments.Addメソッド: 添付ファイル)

更新日:2021年9月28日

こんにちは。

Excel VBAからOutlookを操作する方法を、過去にいくつか備忘録しました。

これまで、作成するメールには、添付ファイルを1つだけ付けていたのですが、改めて添付ファイルの扱い方にフォーカスして備忘録しておきます。



■ 動作環境

 

OS: Windows 8.1(64ビット)

Excel: 2013(32ビット)

Outlook: 2013(32ビット)



Attachmentsコレクション

 

Attachmentsコレクションは、MailItemオブジェクトに格納された添付ファイル(Attachmentオブジェクト)の集合体です。AttachmentsコレクションのAdd / Removeメソッドを利用することで、添付ファイルを作成/削除できます。



□ Addメソッド

> MailItemオブジェクト.Attachments.Add(Source, [Type], [Position], [DisplayName])

  • 引数 Source は、(フルパスの)添付ファイル名。

  • 引数 Type は、添付ファイルの種類を表す OlAttachmentType 定数のいずれか。

  • 引数 Position は、リッチテキスト形式の場合のみ有効。 値1の場合、メッセージ本文の先頭に配置。 メール本文の文字数より大きい値の場合、メール本文の末尾に配置。 値0の場合、添付ファイルは非表示。

  • 引数 DisplayName は、リッチテキスト形式および Type がolByValueの場合のみ有効。

  • 戻り値は、新しい添付ファイルを表すAttachmentオブジェクト。

引数 Type の設定値(OlAttachmentType)は次のとおり。

  • olByValue: 1、元のファイルのコピー。元のファイルが削除されてもアクセス可能。

  • olByReference: 4、Microsoft Outlook 2007 以降、この値はサポートされていません。olByValue を使用して、ファイル システムのファイルのコピーを添付。

  • olEmbeddeditem: 5、Outlookメッセージフォーマットファイル (.msg) で、元のファイルのコピー。

  • olOLE: 6、OLE ドキュメント。

1つのファイルを添付する場合は、こんな感じです。

引数 Source 以外は任意なので、手っ取り早く Source のみ指定してみました。



□ Removeメソッド

> MailItemオブジェクト.削除(Index)

  • 引数 Index は、1から始まるオブジェクトのインデックス値を指定。



■ 複数のファイルを添付

 

複数ファイルを添付する場合は、Addメソッドをその回数分コールするだけです。^^



□ ツールの画面イメージ



□ 『ファイル指定』ダイアログ

※これ以降も同様ですが、「m_」で始まる英語大文字の変数名みたいな名称は、何れも私が別途定義している定数です。


基本的な考え方は、過去に備忘録した次の記事も合わせてご覧ください。


ここならではのポイントは、GetOpenFilenameメソッドから返された値(配列)をJoin関数で連結してセルに設定している点です。



□ メール作成/表示

ここでのポイントは、次のとおりです。

  • Join関数で連結してセル設定した値を、Split関数でまた分割し配列へ戻す

  • 複数ファイルの数分、Addメソッドでファイルを添付(MailItemオブジェクトへ登録)



■ まとめ

 

いかがでしたでしょうか?

これで添付ファイルも自由に操れますね!「ファイル指定」ダイアログのフィルタを凝ることで、より幅広い制御を実現できます。

次回以降も、苦労した点を備忘録しようと思います。

閲覧数:7,666回0件のコメント

最新記事

すべて表示

Comments


©2020 by Excelノウハウの備忘録♪。Wix.com で作成されました。

bottom of page