ぺんろぐ

Windows、Webデザイン、ネット、ゲームなど中心とした気まぐれ更新ブログ。

Accessでメール送信フォームを作る。Outlook使用(AccessVBA)

access.jpg
今回は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フォームを利用したメールが送信できるように。

スポンサードリンク

  1. 2012/04/28(土) 18:55:22|
  2. Access
  3. | コメント:0

コメント

コメントの投稿

管理者にだけ表示を許可する

FC2Ad