レポートを定期的に電子メールで自動送信するには

データベースに登録されている全レポートを検索して、印刷条件に該当するレポートをスナップショット形式で電子メールにて自動送信する方法を解説します。
  1. Access 2000を起動してサンプルデータベース Northwind.mdb を開きます。

  2. データベースウインドウが表示されたら、レポートのボタンをクリックして五十音順商品リストをデザインモードで開きます。

  3. 五十音順商品リストのレポートプロパティを表示させて、タグプロパティに以下の情報を設定します。尚、各項目の区切り文字としてセミコロン(;)を使用します。タグに情報を設定したらレポートを保存して閉じます。



    タグに設定する内容:
    項目 内容
    Report ID レポートの印刷条件を設定します。
    例:Daily, Weekly, Monthly, Yearly, On Demand
    To 電子メールの宛先を設定します。複数の宛先を指定するときは、コンマで区切ります。
    例: supervisor@friendlysw.com,ceo@friendldlysw.com
    Subject 電子メールの件名を設定します。
    Body 電子メールの本文を設定します。


    タグの内容:
    Daily;ceo@friendlysw.com;Snapshot Report;Here is the Daily Report

    図1-レポートのタグにReportID, To, Subject, Bodyを設定した例

    同様の手順でその他のレポートのタグプロパティに電子メール送信情報を設定します。

     

  4. 新規のフォームを作成して、メール送信のコマンドボタン(cmdSendMail)を配置します。コマンドボタンのクリックイベントに、リスト1のコードをコピー&ペーストします。この例では、SendSnapShotの引数にReport IDとしてDailyを指定していますので、全レポートのタグプロパティを検索してDailyに印刷するレポートをスナップショット形式で電子メールにて送信します。電子メールの宛先、用件、本文は、レポート毎に設定することができます。複数の宛先を指定するときは、コンマ(、)で区切ります。


    リスト1-メール送信用コマンドボタンのクリックイベント処理
    Private Sub cmdSendMail_Click()
      SendSnapShot "Daily"
    End Sub
    
    Sub SendSnapShot(strReportID As String)
      Dim obj As AccessObject
      Dim rpt As Report
      Dim varTag As Variant ' ID(0),To(1),Subject(2),Body(3)
      Dim intI As Integer
      Const conID = 0
      Const conTo = 1
      Const conSubject = 2
      Const conBody = 3
      
      On Error Resume Next
      For Each obj In CurrentProject.AllReports
          DoCmd.OpenReport obj.Name, acViewDesign
          Set rpt = Reports(obj.Name)
          With rpt
              varTag = Split(Nz(.Tag), ";") ' 0-based array
              If UBound(varTag) > 1 Then
                  If LCase(varTag(conID)) = LCase(strReportID) Then
                      DoCmd.OpenReport obj.Name, acViewPreview
                      DoCmd.SendObject acSendReport, obj.Name, _
                        acFormatSNP, Replace(varTag(conTo), ",", ";"), , , _
                        varTag(conSubject), varTag(conBody), False
                  End If
              End If
          End With
          DoCmd.Close acReport, obj.Name, acSaveNo
      Next obj  
    End Sub
    



  5. フォームをビューモードに切り替えたら、メール送信のコマンドボタンをクリックします。Outlook 2000を起動して送信トレイにメールが送信されていることを確認してから、送受信のアイコンをクリックして送信します。

  6. フォームを保存してAccess 2000を終了します。