グラフウィザードで作成したグラフを電子メールで送信するには ( Access 2000)

グラフウィザードを使用してレポート上に作成したグラフを、電子メールで自動送信する方法を説明します。
ここで紹介する方法を採用すると、商品区分別売上高をグラフ化(視覚化して見易く加工)して定期的に電子メールで自動送信することができます。

  1. Access 2000 を起動してサンプルデータベース Northwind.mdb を開きます。

  2. フォーム編にて解説した グラフウィザードを使用してフォーム上にグラフを表示させるには を参考に95年商品区分別売上高のグラフを新規レポートに作成します。

    図1-グラフウィザードを使用してレポート上にグラフを表示させた例


  3. グラフウィザードを使用した場合、図1に示すように月名が日本語化されないで英語名で表示されます。月名を日本語化するには、グラフのプロパティを表示させて値集合ソース(Row Source)をクリックしてクエリビルダボタンを表示させます。

    クエリビルダボタン
    をクリックするとSQLステートメントが表示されますので、式1: (Format([出荷日],"mmm"" '""yy"))式1: (Format([出荷日],"m月"))のように変更します。クエリを保存したら、プレビューボタンをクリックして結果を確認します。月名が斜めに表示されているときは、グラフをダブルクリックしてGraph9 Server を起動します。X軸をダブルクリックすると、書式設定のダイアログが表示されますので、フォントタブをクリックしてサイズに設定します。

    レポートの空き領域をクリックしてGraph9 Serverを終了させたら、プレビューで結果を確認します。図2のようにグラフが表示されるように調整します。


    図2-グラフのX軸に表示される月名を日本語化した例


  4. レポートのプロパティを表示させたら、その他のタブをクリックしてタグ(Tag)に電子メール送信情報(レポートID、宛先、件名、本文)を設定します。

    電子メール送信情報:
    Monthly;ceo@friendlysw.com;Snapshot Report;Here is the Monthly Report

    レポートを rpt95年商品区分別売上高 の名称で保存します。


    レポートのタグに設定する、電子メール送信情報の詳細については レポートを定期的に電子メールで自動送信するには を参照してください。


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

    リスト1-コマンドボタンのクリック(On Click)イベントの処理
    Private Sub cmdSendMail_Click()
      SendSnapShot "Monthly"
    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             


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

  7. Outlook 2000で、メールを受信して添付ファイルを開くと、Snapshot Viewerが起動されてレポートのグラフが表示されます。


    図3-電子メールで受信した添付ファイルを Snapshot Viewerで開いた例