DoCmd.SendObject を使ってアクセスマクロからメールを発信するサンプルです。Outlookを使っていて、凝ったことをしようと思わなければこれが一番簡単にマクロから電子メールを発信する事ができると思います。
コンテンツ
条件整理
今回は細かい条件を付け、「アクセスマクロの標準機能」だけで処理を組んでみようと思います。
メール | Microsoft Outlook が正常動作している |
---|---|
テーブル | T_テーブル1 |
クエリ | Q_クエリ1 |
Q_クエリ1 =0件 |
本文だけのメールで「今日のアラームリストはありません」と配信 |
Q_クエリ1 >0件 |
Q_クエリ1をエクセルにしてメールに添付、「本日のアラームリスト」としてメール配信 |
マクロで件数を評価する
件数を評価するため簡単なマクロで説明します。VBA的に記述すると以下となります。
If Q_クエリの件数 = 0 Then
MsgBox “クエリの件数は0件です”
Else
MsgBox “クエリの件数は0件より多い”
End If
処理結果
詳細解説
以下手順に沿って詳細を説明していきます。
プログラムフロー「If」
右側のアクションカタログの中からプログラムフロー「If」をマクロの処理分岐したいところの前にドラッグ&ドロップします。
If DCount(“*”,”Q_クエリ1″)=0 Then
簡単に言うと DCount(“*”,クエリ名称) でそのクエリの件数を表します。
=0 なのでそのクエリが0件の場合という事になります。
Else
「Else の追加」で追加されます。
If文が成立しなかった場合に処理が走ります。DCountはマイナス値にはならないのでそのクエリの件数が0より大きいという意味です。
If文の最後
VBAで言うところの End If です。プログラムフロー「If」をドラッグ&ドロップした時点で追加されています。
メール発信にマクロを修正
「メッセージボックス」 → 「データベースオブジェクトの電子メール送信」に修正を加えます。
今回はオブジェクトの種類:クエリ
出力ファイル形式:Excel ブック (*.xlsx)
メッセージの編集:いいえ → そのままメールが発信されます。はい を選ぶとOutlookで発信メール編集中になります。
まとめ
VBAのスキルがある人はおそらくマクロで引っ掛かることは何もありません。
しいて言えば件数を調べる「DCount」で引っ掛かるかな?というところですが、「Select Count(*) From クエリ名」で同じことができますのでなんとでもなると思います。
関連記事:「アクセスのマクロからアラームメールを発信する【Access マクロ】」
関連記事:「Basp21を使ってアクセスのマクロから電子メールを発信する【Access マクロ】」
関連記事:「CDO.Messageを使ってアクセスのマクロから電子メールを発信する【Access マクロ】」
この記事へのコメントはありません。