#463 既定のメールソフトで新規メールにデータを添付する方法 VBA

DoCmdオブジェクトのSendObjectメソッドを使うと、メールに、テーブルやフォーム、レポートなどのAccessオブジェクトを添付することができます。このメソッドを実行すると、OS上で設定された既定のメールソフトの新規メールが自動的に生成され、そこに指定のAccessオブジェクトが"添付"されます。

SendObjectメソッドは、次のような順番で引数を指定します(必要に応じて一部の引数を省略することもできます)。

  1. Accessのどのオブジェクトを添付するかを組み込み定数で指定します
    • テーブル → acSendTable
    • クエリ → acSendQuery
    • フォーム → acSendForm
    • レポート → acSendReport

  2. 添付するAccessオブジェクトの名前(テーブル名やフォーム名など)を指定します

  3. 添付する際のデータ形式を指定します
    ここにどのような値を設定するかはオブジェクトの種類によって異なります。この引数を省略してコードを実行すると、その形式を選択するダイアログが表示されます(下図参照)。そこに選択肢として表示されている項目のいずれかを文字列としてここに指定します。

  4. メールの宛先(To)
  5. メールの宛先(CC)
  6. メールの宛先(BCC)
  7. メールの件名
  8. メールの本文

  9. メールを直ちに送信するかどうかを指定します。
    新規メールを生成してそれを編集もしくは確認後に、メールソフトのマニュアル操作でメールを送信したい場合にはTrueを、直ちに送信する場合にはFalseを指定します。Trueが既定値です。
    ただし、Falseを指定した場合でも、メールソフトの設定等によっては直ちにメール送信できないことがあるようです。

プログラム例:

'メールにレポートを添付します
DoCmd.SendObject acSendReport, _
          "rpt社員", _
          "Snapshot 形式 (*.snp)", _
          "abcdefg01@****.com", _
          "abcdefg02@****.com", _
          "abcdefg03@****.com", _
          "社員レポート", _
          "社員のレポートを送付します。"

'メールにテーブルを添付します
DoCmd.SendObject acSendTable, _
          "社員", _
          "テキスト ファイル (*.txt)", _
          "tabcdefg01@****.com", , , _
          "社員テーブル", _
          "社員のテーブルデータを送付します。"


一例目の実行結果:
一例目の実行結果

二例目の実行結果:
二例目の実行結果

データ形式未指定のときに表示されるダイアログの例:
データ形式未指定のときに表示されるダイアログ
| Index | Prev | Next |

この情報は参考になりましたか?、問題は解決しましたか?、もしまだなら......
T'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします


Copyright © T'sWare All rights reserved