パソコン、スマホ関係での格闘記

めいあんのIT格闘記

Access

AccessデータベースからEメールを送る(サンプル付き)

在庫管理システムを作っていて「【安全在庫】に引っかかる品目が現れたら管理者にEメールを飛ばしたい」と思っていました。

「さすがにAccessからはEメールは送れないだろう」と調べもしておりませんでしたが、できるのですね。

以下のサイトを参考にしてサンプルファイルを作って実行してみましたら、すんなり成功しました。

 

注意

Biglobeのメールアカウントを利用して自分宛てにメールしてみました。一部smtpサーバーの設定にBiglobeの設定が残っていますが、それは環境に合わせて書き換えの必要があります。

メールアドレス・パスワード・宛先・メールサーバーの設定、これらが揃わないとサンプルは動作しません。

Eメールエラー

 

参考にしたサイト




AccessデータベースからEメールを送る(サンプル付き)

在庫管理システムについては⇩

めいあんのIT格闘記
簡易的にAccessデータベースで在庫管理システムを作成(サンプル付)

必要に迫られて簡易的な在庫管理システムを作りました。 在庫管理システムを作るにあたり、それはもう膨大な数のWebサイトを参考にしました。そのまま使えるAccessの在庫管理システムがあればいいのに、そ ...

続きを見る

フォーム

フォームには「送信」のコマンドボタン(コントロール名:cmd_送信)を配置したのみです。

【プロパティシート】-【イベント】タブ-【クリック時】を「イベントプロシージャ」に変え、右横の【…】をクリックしてVBエディタを開きます。

テーブル

テーブルは2つあります。

T_社員

メールアドレス・パスワードの情報が入ったテーブルです。

T_メール送信履歴

送信履歴を残します。「送信日時」と「本文」が格納されています。送信に成功しますと、「可否」がTrueとなり、チェックが入ります。何らかのエラーで送信失敗時はFalseになります。

ここではサンプルですので、実用化するには「宛先」「cc:」「エラーコード」などのフィールドも必要かと思います。




AccessデータベースからEメールを送る(サンプル付き)

VBAコード

最初の設定

VBエディタを開きましたら、最初に【ツール】-【参照設定】をクリックします。

参照設定

【Microsoft CDO for Windows 2000 Library】にチェックをしてOKボタンを押します。

参照設定2

コード

フォームのVBAコードは以下の通りです。VBエディタにコピペします。

Function cdoSendMailを「フォーム1」の中に書いていますが、各フォーム共通で使用する場合は標準モジュールに移動します。

 

このFunction内にて「T_社員」テーブルを参照して変数に入れていますが、Function cdoSendMailの引数とすることも可能です。

例えば

として呼び出し側から渡してやればこのFunction内から「T_社員」テーブルを参照している処理を削除できます。

余談

試していませんが、Excelでも使用可能だろうと思います。sheet内にボタンを配置してVBAコードを実行させればできるかと思います。

サンプルダウンロード

ファイルを最初に開く際に「コンテンツの有効化」をクリックしてください。

コンテンツの有効化

拡張子を.mdbにしてあります。Access2002以降で開けると思います。

ダウンロードはこちら

最後に

余計なお節介ですが、

メールのパスワードが入っていますので、ここだけ別のAccessデータベースにし、管理者パスワードを掛けるか、データベースごと暗号化するなどした方がよいかと思います。

また、会社の業務にて使用される場合には、このためだけのメールのアカウントをシステム管理者に発行をお願いすると良いかと思います。

 

余談ですが、どこの誰かわらない人にEメールのパスワードを特定されてしまい、踏み台にされて大量のスパムメールを全世界に配信されたことがあります。Biglobeから「警告書」が届いて慌ててパスワードを変更した覚えがあります。

-Access
-, ,

© 2020 めいあんのIT格闘記

© 2020 めいあんのIT格闘記