Accessのフォームからメールを送りたい…そのお悩み解決します!
こんにちは、なかぜんです!
「Accessで作ったシステムから直接メールを送れたら便利なのに…」と思ったことはありませんか?
例えば、納品書や見積書の送信、問い合わせ内容の通知など、Accessにちょっとしたメール送信機能があるだけで業務の効率がぐんと上がります。
この記事では、Access初心者でも安心して取り組めるように、Outlookを使ったメール送信機能の作り方を、やさしく丁寧に解説していきます。
基本の流れ:AccessとOutlookを連携させる
必要な環境
- Microsoft Access(バージョン問わず)
- OutlookがインストールされているPC
AccessとOutlookはMicrosoft製品同士なので、VBAを使えば簡単に連携できます。
実装の全体像
- フォームにボタンを配置する
- VBAでOutlookを呼び出してメールを作成する
- 宛先・件名・本文などを設定して送信
実際のコードと解説
フォームのボタンに以下のコードを設定しましょう
Private Sub cmdSendMail_Click()
Dim olApp As Object
Dim olMail As Object
' Outlookを起動(既に開いていればそれを使用)
On Error Resume Next
Set olApp = GetObject(, "Outlook.Application")
If olApp Is Nothing Then
Set olApp = CreateObject("Outlook.Application")
End If
On Error GoTo 0
' メールアイテムの作成
Set olMail = olApp.CreateItem(0) ' 0はメールアイテムの定数
With olMail
.To = "example@example.com" ' 宛先
.CC = "" ' CC(必要に応じて)
.Subject = "テストメール" ' 件名
.Body = "これはAccessから送信したメールです。" ' 本文
.Send ' 送信(.Displayにすれば確認画面付き)
End With
MsgBox "メールを送信しました!", vbInformation
End Sub
コードのポイント解説
GetObject
でOutlookを取得、起動していない場合はCreateObject
で起動CreateItem(0)
でメールアイテムを新規作成.Send
で即送信。確認したい場合は.Display
に変更
注意点とよくあるミス
- Outlookがインストールされていないと動作しません
- セキュリティ警告が出る場合があります(Outlookのバージョンによる)
- 宛先アドレスが空だとエラーになるので、事前にチェックすると安心です
応用ポイント:本文にレコードの内容を差し込む
より実用的にするために、テーブルのデータをメール本文に差し込む例をご紹介します。
Dim customerName As String
customerName = Me.txtCustomerName ' フォームのテキストボックスから取得
.Body = customerName & "様、いつもありがとうございます。" & vbCrLf & _
"ご注文内容を確認させていただきます。"
このように、フォーム上の値を動的に本文に入れることで、一人ひとりにカスタマイズされたメール送信が可能になります。
まとめ:Accessでもここまでできる!
今回は、AccessのフォームからOutlookを使ってメールを送る方法をご紹介しました。
ポイントは、VBAのCreateObject
を使ってOutlookを呼び出し、CreateItem
でメールを生成するところでしたね。
最初は「難しそう…」と思っても、意外とシンプルなコードで実現できることに驚かれたのではないでしょうか。
次のステップ
- 件名や本文をレコード内容に応じて自動変更
- PDF添付やBCC送信などの拡張機能
- 条件付きでメール送信(例:売上が一定以上など)
Accessは工夫次第でまだまだ便利に使えます。これからも一緒に楽しみながらレベルアップしていきましょう!
bookfan 1号店 楽天市場店
¥2,992 (2025/05/02 11:14時点 | 楽天市場調べ)
