小さい会社の1人SEの開発記というか奮戦記

  1. Access
  2. 3690 view

アクセスのマクロからアラームメールを発信する【Access マクロ】

Office365の導入で社員に一気に身近になったMS-Access、使い始めてくるとあれもこれもと使ってきます。使い始めの頃は喜んで使っているのですが、少し慣れてくると「これ自動化できないの?」と聞いて来ます。特にアラームメールは自分でオペするのではなくスケジューラーで起動してメールで送ってきて欲しいそうです。まずはアクセスからメールを発信する手段をまとめます。

最終的にやりたい事のイメージ

  1. スケジューラーからAccessを起動する
  2. AutoExecマクロでアラームリストを集計する
  3. アラームリストが0件ならば「yyyy/mm/ddのアラームリストはありません。」と本文のみのメールを発信する。
  4. アラームリストが1件以上であればアラームリストをエクセル出力する。
  5. アラームリストを「アラームリスト_yyyymmdd.xlsx」の形にリネームする。
  6. 件名の最後に(mm/dd)を付けて、「アラームリスト_yyyymmdd.xlsx」を添付してメール発信する

アクセスからメールを発信する手段

スケジューラーやファイルのリネームは一番最後に説明するとして、まずはメール発信についてまとめます。

真面目にプログラマをしていた2000年前後は「BASP21」に大変お世話になっていました(2007年6月で更新が止まっていますが今でも使えると思います)。今現在で考えると、Microsoftが提供しているライブラリを使用してメール発信を実装するのが情報の質と量ともに豊富だと思います。参考文献をざっとまとめると以下の通り。

DoCmd.SendObject メソッド

Microsoft Docs「DoCmd.SendObject メソッド (アクセス)
マクロで「データベースオブジェクトの電子メール送信」を設定し、マクロを Visual Basic に変換すると分かり易いです。
DAO
を使ったメール発信でメールを簡単にOutlook(標準設定のメールクライアント)から送信する事ができます。Outlookを使っていて社内向けのアラームメールで良ければこれが一番簡単だと思います。

関連記事:「DoCmd.SendObjectを使ってアクセスのマクロから電子メールを発信する【Access マクロ】

Microsoft Outlook Object Library

Microsoft Docs「Outlook VBA リファレンス
Outlook Visual Basic for Applications を使用する方法。名前の通り Outlookを使います。

Microsoft CDO for Windows Library

Microsoft Developer Network「CDO(全般)
CDO.Message を使い直接メールを発信する方法、Outlookを使っていなければこの方法を選択するべきです。VBScriptからも使えるのでコマンドライン(cscript.exe)をスケジューラーから直接起動する事もできます。

関連記事「CDO.Messageを使ってアクセスのマクロから電子メールを発信する【Access マクロ】

Microsoft 以外のコンポーネンツを使う

2000年頃かなり使い込んだ「Basp21」が有名です。
当時はメールの送信ばかりでは無く、画像データをデータベース(BLOB型)にアップロードとダウンロードに使っていたので細かいところまで使用経験があります。

関連記事:「Basp21を使ってアクセスのマクロから電子メールを発信する【Access マクロ】

まとめ

Outlookさえ使っていれば、おそらくどれを選択したとしても「最終的にやりたい事のイメージ」については実装できると思っています。

Outlookを使っていないのであれば、CDO.MessageBasp21 を選択する事になるかと。別途ソースプログラムをまとめて行こうと思います。

 

Accessの最近記事

  1. Accessの数値型ではまる・・・。

  2. クエリで日付から曜日を算出する。【Access】

  3. クエリのLikeをバイナリーモードで処理したい【Access】

  4. アクセスのマクロ機能を初心者に解説【Access】

  5. NZ関数でNullを上手く使う【Access】

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

CAPTCHA


お薦め書籍

最近の記事

  1. Access

    Accessの数値型ではまる・・・。
  2. Excel

    日本語をエンコードする【Excel VBA】
  3. Access

    クエリで日付から曜日を算出する。【Access】
  4. PCパーツ

    ASUS AMD Ryzen 4000 シリーズ搭載小型ベア…
  5. Microsoft365

    コンデジをTeamsのWebカメラに使う
  6. SQL Server

    SQL文で今日から7日前までを指定する