
今回はAccessフォームからメールを送信する方法。
別メールソフトを経由して送信するという形になります。
今回はOfficeに入ってる、「Outlook」を使います。
・Outlookでメールが送受信できる状態にする。
インストールされているけど、使用していない場合は
「ファイル」→「アカウント情報」→「アカウントの追加」でメールを設定しておく。
・Outlookのライブラリを入れる。
VisualBasicの方のウィンドウにあるメニューの
ツール → 参照設定 の順で選択。
「Microsft Outlook xx Object Library」 (xxはバージョン)
にチェックを入れる。
以下、VBAのコード。
スポンサードリンク
標準モジュールにメール送信のVBAを記入。
Option Compare Database
'アウトルックを起動
Public Sub MailOpen()
Dim MSol As Long
MSol = Shell("outlook", vbNormalFocus)
If MSol = 0 Then MsgBox "起動失敗"
End Sub
'メール送信のソース
Public Sub MailSend()
Dim Apl As Outlook.Application
Dim Mli As Outlook.MailItem
Set Apl = CreateObject("Outlook.Application")
Set Mli = Apl.CreateItem(ItemType:=olMailItem)
With Mli
.To = Forms("メールフォーム").Controls("宛先")
.Subject = Forms("メールフォーム").Controls("件名")
.Body = Forms("メールフォーム").Controls("本文")
.Importance = olImportanceNormal
On Error Resume Next
.Send
On Error GoTo 0
End With
Set Mli = Nothing
Set Apl = Nothing
End Sub
'メール内容を送信と同時にテーブルに記録
'※追加クエリ等使って、ログを残す場合のみ
Public Sub MailLog()
DoCmd.SetWarnings False '←警告メッセージを非表示設定
DoCmd.OpenQuery "メール送信記録クエリ"
DoCmd.SetWarnings True '←警告メッセージを表示設定に戻す
End Sub
後は、フォーム作成で
メール送信フォームを作って
送信ボタンのソースに
MailOpen
MailSend
MailLog
みたいな感じで記述したら
Accessフォームを利用したメールが送信できるように。
スポンサードリンク