グラフウィザードで作成したグラフを電子メールで送信するお手本

図6-4-1 グラフウィザードで作成したグラフを電子メールで送信するサンプルデータベース
このサンプルデータベースは、Access のグラフウィザードを使用してレポート上に作成したグラフを、電子メールで送信します。Access のグラフウィザードを使用すると、商品区分別売上高などのグラフを、フォームやレポートに表示させることができます。
サンプルデータベースでは、グラフウィザードを使用してレポートに4種類のグラフを作成しています。これらのグラフは、ポップアップフォームからトグルボタンをクリックすることにより、瞬時に切り替えることができます。ポップアップフォームには、面グラフ(3D効果付きの積み上げ面グラフ)、折れ線グラフ(データにマーカーが付けられた折れ線グラフ)、縦棒グラフ(積み上げ縦棒グラフ-項目ごとに値の相対関係を表示、100%積み上げ縦棒グラフ-項目ごとに値の全体に対する割合を比較)の4種類のトグルボタンが配置されていますので、売上分析に最適なグラフを選択することができます。
レポートに表示されているグラフは、ポップアップフォームのメール送信ボタンをクリックすることにより、Outlookの添付ファイルとして送信することができます。添付ファイルは、スナップショットファイル形式(*.snp)で保存されています。メール受信者は、添付ファイルをダブルクリックすると、SnapshotViewerが起動されてグラフが表示されます。表示されたグラフは、印刷することもできます。
サンプルデータベース(CH6-4.mdb)では、以下に示すノウハウを習得することができます。
◆ レポートをスナップショットファイル形式で保存して電子メールの添付ファイルとして送信する方法
◆ グラフウィザードを使用してフォーム/レポートにグラフを表示させる方法
◆ ポップアップフォームからグラフの種類を選択してプレビュー印刷する方法
◆ リンクされたテーブルを再リンクする方法
◆ Windowsのコモンダイアログを表示させる方法
● サンプルデータベースで使用するテーブル/クエリを準備するには
1 Access を起動したら作業フォルダに、新規データベースCH6-4.mdbを作成します。
2 メニューから外部データの取り込み、テーブルのリンクをクリックします。リンクのダイアログが表示されたら、Access のサンプルデータベースNortwind.mdbを選択してリンクボタンをクリックします。(Northwind.mdbは、デフォルトでは”C:\Program Files\Microsoft Office\Office\Sample”にインストールされます。)
3 テーブルのリンクダイアログが表示されたら、すべて選択のボタンをクリックします。最後に、OKボタンをクリックしてリンクを完了させます。

図6-4-2 Northwind.mdbの全てのテーブルをリンクさせる
4 テーブルをリンクしたら、データベースウィンドウにNorthwind.mdbの全てのテーブルが表示されているか確認します。
5 データベースウィンドウからクエリ
をクリックしたら、一覧からデザインビューでクエリを作成するをダブルクリックします。テーブルの表示ダイアログが表示されたら、閉じるをクリックして閉じます。メニューからSQLのアイコン
をクリックして、SQLビューのウィンドウを表示させたらリスト6-4-1のSQLを入力します。(SQLを入力する代わりに、CH6-4.mdbからqry1997SalesbyCategoryをインポートしてもよい。)クエリをデザインビューに切り替えたら、図6-4-3のようになっているか確認します。
リスト6-4-1 qry1997SalesbyCategoryのSQLコマンド
|
SELECT 商品区分.区分名, CCur([受注明細].[単価]*[受注明細].[数量]*(1-[受注明細].[割引])) AS 金額, 受注.出荷日 FROM (商品区分 INNER JOIN 商品 ON 商品区分.区分コード = 商品.区分コード) INNER JOIN (受注 INNER JOIN 受注明細 ON 受注.受注コード = 受注明細.受注コード) ON 商品.商品コード = 受注明細.商品コード WHERE (((受注.出荷日) Between #1/1/1997#
And #12/31/1997#)) ORDER BY 受注.出荷日; |

図6-4-3 1997SalesbyCategoryをデザインビューで表示した例
6 メニューから実行アイコン
をクリックして、クエリを実行させます。実行結果を確認したら、クエリをqry1997SalesbyCategoryの名称で保存して閉じます。

図6-4-4 qry1997SalesbyCategoryを実行させた例
7 テーブルとクエリの準備が完了したら、Access を終了させます。
● グラフウィザードを使用してレポートにグラフを表示させるには
1 Accessを起動したら、作業フォルダに作成したCH6-4.mdbを開きます。
2 データベースウィンドウが表示されたら、レポート
をクリックして新規作成ボタンをクリックします。
3 レポートの新規作成ダイアログが表示されたら、リストボックスからグラフウィザードを選択します。基になるテーブル/クエリのコンボボックスからqry1997SalesbyCategoryを選択したら、OKボタンをクリックします。
図6-4-5 グラブウィザードを選択して、コンボボックスからqry1997SalesbyCategoryを選択
4 グラフウィザードのダイアログが表示されたら、>>ボタンをクリックして、左側の選択可能なフィールドに表示されている全てのフィールドを、右側の選択したフィールドに移動します。次へのボタンをクリックして続行します。

図6-4-6 グラフに表示するフィールドを選択した例
5 グラフの種類のダイアログが表示されたら、折れ線グラフ(左から3列目の上から3行目)を選択して、次へのボタンをクリックします。

図6-4-7 グラフの種類から折れ線グラフを選択
6 グラフウィザードは、クロス集計クエリを前提にしていますので、“区分名”と“月ごとの出荷日”が逆に配置されています。
図6-4-8 グラフウィザードが作成したサンプルレイアウト
7 X軸とY軸を入れ替えるには、グラフウィザードの右側に表示されているフィールドリストから“区分名”をクリックしてY軸の“月ごとの出荷日”にドラッグします。同様の手順で、フィールドリストから“出荷日”をクリックしたら、X軸の“区分名”にドラッグします。

図6-4-9 出荷日と区分名を置換した例
“月ごとの出荷日”をダブルクリックすると、グループ化の設定ダイアログが表示されますので、一覧から月を選択してOKボタンをクリックします。次へのボタンをクリックして、最後のウィザードに移動します。
図6-4-10 出荷日のグループ化設定で“月”を選択
8 最後のグラフウィザードが表示されたら、グラフのタイトルに“1997年商品区分別売上高”を入力して完了ボタンをクリックします。
9 グラフが表示されたら、閉じるのボタンをクリックしてデザインモードに戻ります。このグラフは、あまり見栄えがよくなりませんが、次のステップで見易いグラフに編集します。レポートを“rpt折れ線グラフ”の名称で保存します。
図6-4-11 グラフウィザードで作成したグラフをプレビュー印刷した例
10 レポートを保存したら、Access を終了させます。
● グラフウィザードで作成したグラフが見栄え良く表示されるように編集するには
1 Accessを起動したら、作業フォルダに作成したCH6-4.mdbを開きます。
2 データベースウィンドウが表示されたら、レポート
をクリックして、“rpt折れ線グラフ”をデザインモードで開きます。
3 グラフのOLEオブジェクトをクリックしたら、オブジェクトのサイズを20 x 8cmぐらいの大きさに拡大します。OLEオブジェクトをダブルクリックして、Graph OLE Serverを起動します。グラフの輪郭のサイズハンドラー(■)をドラッグしてOLEオブジェクトのフレームと同じサイズになるように調整します。(グラフの輪郭は、太字の斜線で表示されます。)

図6-4-12 Graph 2000 OLE Serverを起動したところ
4 マウスをグラフタイトルの上に移動したら、ダブルクリックします。グラフタイトルの書式設定ダイアログが表示されたら、フォントタブをクリックしてスタイルを太字、サイズを12に設定します。次に、自動サイズ調整のチェックを外してOKボタンをクリックします。
図6-4-13 グラフタイトルの書式設定
5 グラフ上の凡例をダブルクリックして、凡例の書式設定ダイアログを表示させます。フォントタブをクリックしたら、サイズを9に設定します。自動サイズ調整のチェックを外したら、OKボタンをクリックします。

図6-4-14 凡例の書式設定
6 数値軸(Y軸)をダブルクリックして、軸の書式設定ダイアログを表示させます。目盛タブをクリックしたら、最大値に800000、目盛間隔に100000、補助目盛間隔に20000を設定します。フォントタブをクリックしたら、サイズを9に設定して、自動サイズ調整のチェックを外します。最後に、表示形式のタブをクリックしたら、通貨を選択してOKボタンをクリックします。

図6-4-15 Y軸の書式設定
7 項目軸(X軸)をダブルクリックして、軸(X軸)の書式設定ダイアログを表示させます。フォントタブをクリックしたら、サイズを9に設定します。自動サイズ調整のチェックを外したら、OKボタンをクリックします。

図6-4-16 X軸の書式設定
8 フォーム上のグラフ領域以外をクリックしてGraph OLE Serverを終了させます。グラフのOLEオブジェクトのプロパティを表示させたら、値集合ソースをクリックしてクエリビルダのダイアログを表示させます。行見出しが英語の年月を表示する形式になっていますので、式1: (Format([出荷日],"m\月"))のように書き替えます。クエリビルダの閉じるのボタン(X)をクリックしてダイアログを閉じます。

図6-4-17 グラフの値集合ソースの行見出しを日本語にする
9 ファイルメニューからページ設定をクリックして、ページ設定のダイアログを表示させます。ページのタブをクリックしたら、印刷の向きを横に設定してOKボタンをクリックします。印刷プレビューのアイコン
をクリックして、グラフが書式設定通りに表示されるか確認します。閉じるのボタンをクリックして、プレビュー印刷を閉じます。

図6-4-18 グラフをプレビュー印刷した例(rpt折れ線グラフ)
10 レポートを保存したら、Access を終了させます。
以上、グラフウィザードを使用してレポートに折れ線グラフを作成する手順を説明しましたが、同様の手順で、積み上げ面グラフ、積み上げ縦棒グラフ、100%積み上げ縦棒グラフを作成します。

図6-4-19 積み上げ面グラフ(rpt積み上げ面グラフ)

図6-4-20 積み上げ縦棒グラフ(rpt積み上げ縦棒グラフ)

図6-4-21 100%積み上げ縦棒グラフ (rpt100%積み上げ縦棒グラフ)
● 4種類のグラフ表示をダイナミックに切り替えるポップアップフォームを作成するには
1 Access を起動したら、作業フォルダに作成したCH6-4.mdbを開きます。
2 データベースウィンドウが表示されたら、フォーム
をクリックして一覧からデザインビューでフォームを作成するをダブルクリックします。
3 フォームのデザインビューが表示されたら、メニューからツールボックスのアイコン
をクリックして、ツールボックスを表示させます。ツールボックスのコントロールウィザードのアイコン
がクリック(有効になっている)されているか確認します。
4 ツールボックスから、オプショングループのアイコン
をクリックして、フォームの詳細に配置します。ウィザードの指示に従って、4個のトグルボタンを作成します。オプショングループのプロパティは、表6-4-1のように設定します。トグルボタンのタグプロパティには、レポートの名を設定しておきます。タグに設定されているレポート名は、トグルボタンをクリックしたときに参照します。

図6-4-22 フォームの詳細にオプショングループを作成
5 ツールボックスからコマンドボタンのアイコン
をクリックしたら、オプショングループの下に配置します。コマンドボタンのプロパティは、表6-4-1のように設定します。
表6-4-1 フォームに配置したコントロールのプロパティ
|
コントロールの種類 |
プロパティ |
値 |
|
オプショングループ |
名前 |
grpChartType |
|
既定値 |
1 |
|
|
トグルボタン1 |
名前 |
tgl1 |
|
標題 |
折れ線 |
|
|
タグ |
rpt折れ線グラフ |
|
|
オプション値 |
1 |
|
|
トグルボタン2 |
名前 |
tgl2 |
|
標題 |
積み上げ面 |
|
|
タグ |
rpt積み上げ面グラフ |
|
|
オプション値 |
2 |
|
|
トグルボタン3 |
名前 |
tgl3 |
|
標題 |
積み上げ縦棒 |
|
|
タグ |
rpt積み上げ縦棒グラフ |
|
|
オプション値 |
3 |
|
|
トグルボタン4 |
名前 |
tgl4 |
|
標題 |
100%積み上げ縦棒 |
|
|
タグ |
rpt100%積み上げ縦棒グラフ |
|
|
オプション値 |
4 |
|
|
コマンドボタン |
名前 |
cmdSnapshot |

図6-4-23 フォーム詳細にコマンドボタンを配置
6 フォームのプロパティを表示させたら、表6-4-2のようにプロパティを設定します。メニューからコードのアイコン
をクリックして、フォームモジュールを表示させます。フォームモジュールが表示されたら、CH6-4.mdbを開いて、frmEmailGraphのフォームモジュールをコピーして貼り付けます。フォームモジュールのコードは、リスト6-4-2を参照してください。
表6-4-2 フォームのプロパティ
|
コントロールの種類 |
プロパティ |
値 |
|
フォーム |
ポップアップ |
はい |
|
スクロールバー |
なし |
|
|
レコードセレクタ |
いいえ |
|
|
移動ボタン |
いいえ |
|
|
区切り線 |
いいえ |
|
|
サイズ自動修正 |
いいえ |
|
|
自動中央寄せ |
いいえ |
7 フォームをfrmEmailGraphの名称で保存したら、メニューからビューアイコン
をクリックしてフォームを表示させます。フォームが表示されると、デフォルトの折れ線グラフがプレビュー印刷されます。オプショングループから積み上げ面、積み上げ縦棒のトグルボタンをクリックして、グラフが表示されるか確認します。積み上げ面グラフを再表示させたら、メール送信ボタンをクリックします。

図6-4-24 折れ線グラフがプレビュー印刷された例
8 メール送信ボタンをクリックすると、レポートがスナップショット形式で保存されて、メールに添付されます。電子メールの宛先、件名、本文などは、任意の内容を指定することができます。図6-4-25のOutlookから送信ボタンをクリックすると、Outlookの送信トレイにメールが登録されます。Outlook の送信トレイをクリックして、メールが登録されていることを確認したら、送受信ボタンをクリックします。メール受信者が、添付ファイルをダブルクリックすると、Snapshot Viewerが起動されてグラフが表示されます。グラフは、Snapshot Viewerのファイルメニューから印刷をクリックして、印刷することができます。Snapshot Viewerは、AccessのCD-ROMに同梱されています。AccessのCD-ROMがない場合は、マイクロソフトのホームページから無償にてダウンロードすることができます。

図6-4-25 積み上げ面グラフのレポートが電子メールに添付された例

図6-4-26 電子メールに添付されてグラフをSnapshot Viewerで表示させた例
9 フォームを保存したら、Access を終了させます。
Form_Open()イベントの処理
このイベントは、フォームが開かれたときに発生します。このイベントでは、VerifyLinks_FS()関数を呼び出して、CH3-4.mdbのテーブルのリンクが壊れていないか調べます。リンクが破壊されているときは、Windowsのコモンダイアログが表示されますので、リンク先のデータベースを選択して再リンクします。
Form_Load()イベントの処理
このイベントは、フォームが開かれて、データをロードするときに発生します。このイベントでは、PrintGraphプロシージャを呼び出して、デフォルトの折れ線グラフをプレビュー印刷します。
Form_Unload()イベントの処理
このイベントは、フォームが閉じられるときに発生します。このイベントでは、プレビュー印刷されているレポートを閉じます。
grpChartType_AfterUpdate()イベントの処理
このイベントは、オプショングループのトグルボタンをクリックしたときに発生します。このイベントでは、PrintGraphを呼び出して、トグルボタンに対応したレポートをプレビュー印刷します。
cmdSnapshot_Click()イベントの処理
このイベントは、メール送信のコマンドボタンをクリックしたときに発生します。このイベントでは、DoCmdのSendObjectメソッドを使用して、レポートをスナップショット形式で保存して電子メールに添付して送信します。SendObjectメソッドの引数には、レポート名、保存するファイル形式、宛先、件名、本文などを指定することができます。
DoCmd.SendObject ObjectType:=acSendReport,
_
ObjectName:=mstrReportName, _
OutputFormat:=acFormatSNP, _
To:="ceo@friendlysw.com", _
Subject:="Monthly Report", _
MessageText:="Here is the
monthly sales report."
PrintGraph()の処理
このプロシージャは、現在表示されているレポートを閉じて、引数で指定されたレポートを新たに開きます。DoCmdのOpenReportメソッドで指定するレポート名は、トグルボタンのタグプロパティから取得します。
mstrReportName = Me("tgl" &
intChartType).Tag
DoCmd.OpenReport mstrReportName,
acViewPreview
リスト6-4-2 frmEmailGraphのフォームモジュール
|
Option Compare Database Option Explicit Private mstrReportName As String Private Sub cmdSnapshot_Click() On Error Resume Next DoCmd.SendObject ObjectType:=acSendReport, _ ObjectName:=mstrReportName, _ OutputFormat:=acFormatSNP, _ To:="ceo@friendlysw.com", _ Subject:="Monthly Report", _ MessageText:="Here is the monthly sales report." End Sub Private Sub Form_Load() PrintGraph 1 End Sub Private Sub Form_Open(Cancel As Integer) If Not VerifyLinks_FS("Northwind.mdb", "得意先") Then MsgBox "テーブルの再リンクに失敗しました!" & vbCrLf & _ "Accessのリンクテーブルマネージャから Northwind.mdb “ & _ “を再リンクしてください.", _ vbCritical + vbOKOnly End If Call SetAppTitle_FS("Email Graphs (C) " & Year(Date) & " by Akio Kasai") End Sub Private Sub Form_Unload(Cancel As Integer) If Len(mstrReportName) Then DoCmd.Close acReport, mstrReportName End If End Sub Private Sub PrintGraph(intChartType As Integer) If Len(mstrReportName) Then DoCmd.Close acReport, mstrReportName End If mstrReportName = Me("tgl" & intChartType).Tag DoCmd.OpenReport mstrReportName, acViewPreview End Sub Private Sub grpChartType_AfterUpdate() PrintGraph Me.grpChartType End Sub |