#464 既定のメールソフトで新規メールの本文にデータを出力する方法 VBA

DoCmdオブジェクトのSendObjectメソッドを使うと、既定のメールソフトを使ってAccessオブジェクトを添付した新規メールを生成することができます(「#463 既定のメールソフトで新規メールにデータを添付する方法」を参照)。

しかしその際、SendObjectメソッドの第1〜3引数を省略すると、Accessオブジェクトは添付されず、ふつうの本文だけの新規メールを生成することもできます。

さらに、メール本文を指定する8番目の引数の文字列をあらかじめプログラムで組み立てておくことによって、テーブルなどから読み出したデータを所定のフォーマットに整形してメール本文とすることができます。


次のプログラム例では、「社員」テーブルの全レコードをループで読み込んで、そこに含まれる「社員コード」と「氏名」だけをメール本文に列挙しています。ここでは非常にシンプルな本文となっていますが、単に文字列の処理を行っているだけですので、VBAのプログラムを工夫することによってさまざまなメール本文を組み立てることができると思います。


Dim dbs As Database
Dim rst As Recordset
Dim strBody As String

'メール本文の文頭を組み立てます
strBody = "社員のデータを送付します。" & vbCrLf & vbCrLf

'社員テーブルの全レコードを読み込んでメール本文に追加します
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("社員")
With rst
  Do Until .EOF
    strBody = strBody & !社員コード & vbTab & !氏名 & vbCrLf
    .MoveNext
  Loop
  .Close
End With

'メールを生成します
DoCmd.SendObject , , , _
          "abcdefg01@****.com", , , "社員データ送付", strBody



実行結果:
実行結果
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved