Accessお手本データベースのホームへ戻る

レポートをプレビュー印刷で確認しながら並べ替えして電子メールで送信するお手本

 

5-4-1 レポートを売上高の降順に並べ替えした例

 

このサンプルデータベースは、得意先別売上高のレポートをプレビュー印刷で確認しながら、得意先名、都道府県名、売上高の項目で並べ替えすることができます。売上高は、昇順/降順どちらでも並べ替え可能です。サンプルデータベースを起動すると、自動的にポップアップフォームが開かれます。ポップアップフォームが開かれると、フォームのOnLoadイベントで得意先別売上高のレポートをプレビューモードで開きます。得意先別売上高のプレビュー印刷が表示されている状態で、ポップアップフォームから得意先名、都道府県名、売上高をクリックすると、選択した項目を昇順に並べ替えします。ポップアップフォームから降順のチェックをクリックすると、降順に並べ替えします。

 

ポップアップフォームからメール送信ボタンをクリックすると、レポートをスナップショット形式で保存して電子メールのOutlookに添付して送信することができます。電子メールの宛先、用件、メッセージの内容は、引数で指定することができます。

 

5-4-2 送信ボタンをクリックしたときレポートがOutlookに添付された例

 

サンプルデータベース(CH5-4.mdb)では、以下のノウハウを習得することができます。

 

◆ レポートをプレビュー印刷しながらダイナミックに特定の項目で並べ替えする方法

◆ 並べ替えしたレポートを電子メールの添付ファイルとして送信する方法

◆ テーブル、クエリ、フォーム、レポートを電子メールで送信する方法

◆ レポートを定期的に電子メールで送信する方法

 

   サンプルデータベースで使用するテーブル/クエリを準備するには

 

1 Access を起動したら作業フォルダに、新規データベースCH5-3.mdbを作成します。

 

2 メニューから外部データの取り込みテーブルのリンクをクリックします。リンクのダイアログが表示されたら、Access のサンプルデータベース Northwind.mdbを選択してリンクボタンをクリックします。(Northwind.mdbは、デフォルトでは”C:\Program Files\Microsoft Office\Office\Samples”にインストールされます。)

 

3 テーブルのリンクのダイアログが表示されたら、すべて選択のボタンをクリックします。最後にOKボタンをクリックしてリンクを完了させます。

 

4 テーブルをリンクしたらデータベースウィンドウにNorthwind.mdbの全てのテーブルが表示されているか確認します。

 

5 データベースウィンドウからクエリをクリックして、一覧からデザインビューでクエリを作成するをダブルクリックします。テーブルの表示ダイアログが表示されたら、閉じるのボタンをクリックします。メニューからSQLのアイコンをクリックして、SQLビューを表示させます。SQLビューには、SELECT;が表示されていますので、削除してからリスト5-4-1qrySalesbyCustomersSQLを入力します。(SQLを入力する代わりに、CH2-4.mdbからqrySalesbyCustomersをインポートすることもできます。)売上高のフィールドには、Sum(CCur([受注明細].[単価]*[受注明細].[数量]*(1-[受注明細].[割引])))が埋め込まれています。クエリをデザインビューに切り替えると図5-4-3のように表示されます。クエリをqrySalesbyCustomersの名称で保存して閉じます。

 

リスト5-4-1 qrySalesbyCustomersSQL

SELECT 得意先.得意先名, 得意先.フリガナ, 得意先.都道府県,

Sum(CCur([受注明細].[単価]*[受注明細].[数量]*(1-[受注明細].[割引]))) AS 売上高

FROM 得意先 INNER JOIN (受注 INNER JOIN 受注明細

ON 受注.受注コード = 受注明細.受注コード)

ON 得意先.得意先コード = 受注.得意先コード

GROUP BY 得意先.得意先名, 得意先.フリガナ, 得意先.都道府県;

 

5-4-3 qrySalesbyCustomerのデザインビュー

 

同様の手順で、SQLビューを表示させたら、リスト5-4-2qrySalesbyCustomer2SQLを入力するか、CH5-4.mdbからインポートします。クエリをデザインビューに切り替えると、図5-4-4のように表示されます。クエリをqrySalesbyCustomers2の名称で保存して閉じます。

 

リスト5-4-2 qrySalesbyCustomer2SQL

SELECT [qrySalesbyCustomers].[得意先名], [qrySalesbyCustomers].[売上高],

[qrySalesbyCustomers].[フリガナ], [qrySalesbyCustomers].[都道府県]

FROM qrySalesbyCustomers;

 

 

5-4-4 qrySalesbyCustomers2のデザインビュー

 

6 テーブルとクエリの準備ができたら、Access を終了させます。

 

   得意先別売上高を印刷するレポートを作成するには

 

1 Access を起動したら作業フォルダに作成したCH5-4.mdbを開きます。

 

2 データベースウィンドウからレポートをクリックしたら、新規作成ボタンをクリックします。レポートの新規作成ダイアログが表示されたら、一覧からレポートウィザードを選択します。次に、基になるテーブル/クエリのコンボボックスからqrySalesbyCustomers2を選択してOKボタンをクリックします。以下、レポートウィザードの指示に従って図5-4-5のようなレポートを作成します。

 

5-4-5 得意先別売上高を印刷するレポートレイアウト

 

3 プレビュー印刷で結果を確認したら、rptSalesbyCustomersの名称で保存してAccess を終了します。

 

   レポートを特定のフィールドで並べ替えてメール送信するフォームを作成するには

 

1 Access を起動したら作業フォルダに作成した CH5-4.mdbを開きます。

 

2 データベースウィンドウからフォームをクリックしたら、一覧からデザインビューでフォームを作成するをダブルクリックします。フォームのデザインビューが表示されたら、ツールボックス(コントロールウィザードアイコンがクリックされているか確認してください)からオプショングループのアイコンをクリックして、得意先名、都道府県名、売上高の3個のトグルボタンを作成します。オプショングループのプロパティを表示させたら、その他のタブをクリックして名前をfraSortに書き替えます。次に、データタブをクリックしたら既定値にを設定します。最後に、書式タブをクリックしたら立体表示のコンボボックスから“くぼみ”をクリックします。

 

5-4-6 フォームにオプショングループの並べ替え順を配置した例

 

3 ツールボックスからチェックボックスのアイコンをクリックしてオプショングループの右側に配置します。チェックボックスのラベル標題には、“降順”を入力します。チェックボックスのプロパティを表示させたら、その他のタブをクリックして名前をchkDescendingに書き替えます。

 

4 ツールボックスからコマンドボタンのアイコンをクリックしたら、チェックボックスの下に配置します。コマンドボタンのプロパティを表示させたら、その他のタブをクリックして名前をcmdSnapshotに書き替えます。次に、書式タブをクリックしたら標題を“メール送信”に書き替えます。

 

5 フォームのプロパティを表示させたら、その他のタブをクリックしてポップアップのコンボボックスから“はい”をクリックします。

 

6 メニューからコードのアイコンをクリックしてフォームモジュールを表示させます。CH5-4.mdbを開いたら、frmEmailReportのフォームモジュールをコピーして貼り付けます。フォームモジュールのソースコードは、リスト5-4-1を参照してください。CH5-4.mdbを開いたら、モジュールbasLinkedTables, basMyLib, basWindowsCommonDialogをインポートします。

 

7 フォームをfrmEmailReportの名称で保存したら、ビューモードで開きます。フォームが開かれると、フォームのOnLoadイベントからレポートが開かれてプレビュー印刷されます。並べ替え順のオプショングループから売上高のトグルボタンをクリックして売上高の昇順に並べ替えられるか確認します。次に、降順のチェックボックスをクリックして、売上高が降順に並べ替えられるか確認します。

 

5-4-7 レポートを売上高の降順に並べ替えた例

 

8 レポートのプレビュー印刷が表示されている状態で、ポップアップフォームからメール送信ボタンをクリックします。プレビュー印刷で表示されているレポートがスナップショット形式で保存されて、Outlookの添付ファイルとして送信されます。Outlookに表示されている、宛先、件名、本文の内容は、引数にて指定できます。Outlookから送信ボタンをクリックして、メールが正常に送信されるか確認します。尚、メール受信側でレポートを開くには、Snapshot Viewerが必要になります。Snapshot Viewerは、Access CD-ROMからインストールすることができます。受信側のパソコンに、Accessがインストールされていないときは、マイクロソフトのWebサイトからダウンロードすることができます。

 

5-4-8 レポートをスナップショット形式で保存して添付ファイルとしてOutlookで送信する例

 

9 レポートの並べ替え、メール送信が正常に動作することを確認したら、Access を終了させます。

 

Sub Form_Load()イベントの処理

このイベントは、フォームが開かれてデータをロードするときに実行されます。このイベントでは、DoCmdOpenReportメソッドでレポート(rptSalesbyCustomers)をプレビューモードで開きます。更に、サブプロシージャSortReportを呼び出して、既定値の都道府県名でレポートを並べ替えします。

 

 

Sub Form_Unload()イベントの処理

このイベントは、フォームが閉じられる直前に実行されます。このイベントでは、DoCmdCloseメソッドでOnLoadイベントで開いたレポート(rptSalesbyCustomers)を閉じます。

 

 

Sub fraSort_AfterUpdate()イベントの処理

このイベントは、並べ替え順のオプショングループからトグルボタンをクリックしたときに実行されます。このイベントでは、サブプロシージャ SortReportを呼び出して、選択した項目でレポートを並べ替えします。

 

 

Sub chkDescending_AfterUpdate()イベントの処理

このイベントは、降順のチェックボックスをクリックしたときに実行されます。このイベントでは、サブプロシージャ SortReportを呼び出して、既に選択したフィールド名を降順に並べ替えて再印刷します。

 

 

Sub cmdSnapshot_Click()イベントの処理

このイベントは、メール送信ボタンをクリックしたときに実行されます。このイベントでは、DoCmdSendObjectメソッドを使用してレポートをスナップショット形式で保存してメールの添付ファイルとして送信します。SendObjectメソッドでは、テーブル、クエリ、フォーム、レポート等を、HTML、リッチテキスト、テキスト、エクセルの形式で保存して送信することができます。SendObjectの構文については、後述するTipを参照してください。

 

  DoCmd.SendObject _

    ObjectType:=acSendReport, _

    ObjectName:=conReportName, _

    OutputFormat:=acFormatSNP, _

    To:="ceo@friendlysw.com", _

    Subject:="Weekly Report", _

    MessageText:="Here is the weekly sales report"

 

メールの宛先を複数指定するときは、セミコロン(;)で区切ります。

 To:=”fs1@friendlysw.com;fs2@friendlysw.com;fs3@friendlysw.com”

また、電子メールの宛先TO:の他にCC:BCC:も指定できます。

 

 

Sub SortReport()の処理

このサブプロシージャは、レポートを指定した項目で並べ替えします。Choose()関数を使用して、オプショングループで選択したフィールド名を取得して、メモリ変数strOrderByに格納します。次に、降順のチェックボックスを調べて、チェックされているときは、フィールド名の後に“DESC”を付加します。最後に、レポートのOrderByOrderByOnプロパティを再設定して並べ替えします。

 

  With Reports(conReportName)

    strOrderBy = Choose(fraSort, _

      "[フリガナ]", "[都道府県]", "[売上高]")

    If chkDescending Then

      strOrderBy = strOrderBy & " DESC"

    End If

    .OrderBy = strOrderBy

    .OrderByOn = True

  End With

 

リスト5-4-1 frmEmailReportのフォームモジュール

Option Compare Database

Option Explicit

 

Private Const conReportName = "rptSalesbyCustomers"

 

Private Sub chkDescending_AfterUpdate()

  Call SortReport

End Sub

 

Private Sub cmdSnapshot_Click()

  On Error Resume Next

  DoCmd.SendObject _

    ObjectType:=acSendReport, _

    ObjectName:=conReportName, _

    OutputFormat:=acFormatSNP, _

    To:="ceo@friendlysw.com", _

    Subject:="Weekly Report", _

    MessageText:="Here is the weekly sales report"

End Sub

 

Private Sub Form_Load()

  DoCmd.OpenReport conReportName, acViewPreview

  Call SortReport

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 Report (C) " & Year(Date) & " by Akio Kasai")

End Sub

 

Private Sub Form_Unload(Cancel As Integer)

  DoCmd.Close acReport, conReportName

End Sub

 

Private Sub SortReport()

  On Error Resume Next

  Dim strOrderBy As String

 

  With Reports(conReportName)

    strOrderBy = Choose(fraSort, _

      "[フリガナ]", "[都道府県]", "[売上高]")

    If chkDescending Then

      strOrderBy = strOrderBy & " DESC"

    End If

    .OrderBy = strOrderBy

    .OrderByOn = True

  End With

End Sub

 

Private Sub fraSort_AfterUpdate()

  Call SortReport

End Sub

 

 

Tips

DoCmdSendObjectメソッドの構文

DoCmd.SendObject [objecttype][, objectname][, outputformat][, to][, cc][, bcc][, subject][, messagetext][, editmessage][, templatefile]

SendObjectメソッドでは、テーブル、クエリ、フォーム、レポートをHTML,リッチテキスト、テキスト、エクセルの形式で保存してメールに添付することができます。

引数のobjecttype,outputformatで指定可能な値。

引数

内容

objecttype

次のいずれかの組み込み定数を指定します。

acSendDataAccessPage
acSendForm

acSendModule
acSendNoObject (
既定値)
acSendQuery
acSendReport
acSendTable

outputformat

次の組み込み定数のいずれかを指定します。

acFormatDAP
acFormatHTML

acFormatRTF
acFormatTXT
acFormatXLS

 

 

 

ダウンロード (CH5-4.lzh)
Accessお手本データベースのホームへ戻る