はてなブックマークに追加
Facebookでシェア
Google+でシェア
Twitterでシェア
レポートの基本オブジェクト
VBAでレポートを操作するにはReportオブジェクトを使います。Reportオブジェクトは、レポートと連結したデータを操作するときや印刷に関する設定を行うなど、レポート操作の基本となるオブジェクトです。

Reportオブジェクトを参照・取得する方法
 Reportオブジェクトは、Me/Reports/Screen.ActiveReportを使って参照・取得できます。どの書式を使ってもReportオブジェクトを取得できますが、取得対象のレポートが異なります。

 「レポートから別なレポートを参照する場合はReports」、「最前面のレポートを参照する場合はScreen.ActiveReport」、「実行中のVBAが記述されたレポートを参照する場合はMe」のように、各書式を場面に応じて使い分けます。

図 1Me/Reports/Screen.ActiveReportの書式
Me.プロパティメソッド
[書式 1] 実行中のVBAが記述されているフォームやレポートを表します

Reports(レポート名).プロパティメソッド
[書式 2] 任意のレポートを表します

Screen.ActiveReport.プロパティメソッド
[書式 3] 最前面に表示されているレポートを表します
◆引数
レポート名
 操作対象のレポートの名前を、文字列で記述・指定します。

◆プロパティ/メソッド
 NextRecord、Printerといったレポートの機能や、レポート上に配置したテキストボックスなどのコントロール名を記述します。

Tips
・Meは「自分自身」を表します。フォームで使用した場合はフォームの機能を、レポートで使用した場合はレポートの機能が使えます。
・Screen.ActiveReportを使うときは、必ずレポートが最前面に表示されていなくてはなりません。テーブルやクエリが最前面に表示されているとエラーが発生します。
・プロパティ/メソッドの多くは、フォームのそれと使い方や機能が同じです。

【記述例】
レポート「住所一覧表」にフィルタの条件を設定します。
Reports("住所録一覧表").Filter = "登録番号 = 1"

ワンポイント
Reports/Screen.ActiveReportとMeの違い
MeとReports/Screen.ActiveReportは、どちらもReportオブジェクトを表します。Reportオブジェクトそのものの機能的な違いはありませんが、プログラムを記述したレポート上にあるコントロールを参照するときはMeの方が便利です。なぜなら、コントロール名を一覧で選択できるためです。また、Meを使うと、自分自身を参照・操作していることが明確になるため、プログラムの読みやすさも向上します。

Meを使ったときに表示されるメソッドとプロパティの一覧
Reportオブジェクトの使用例
 次のリストは、Reportオブジェクトを使用したプログラムの作成例です。プロシージャ「詳細_Format」は、レポート/詳細セクションのイベント「フォーマット時」のイベントプロシージャです。

 このサンプルでは、レコードの内容によって一部の印刷項目(テキストボックス)を印刷するかどうかの制御を行っています。使用するテキストボックスはプログラムを記述したレポート内(自分自身)にあるため、ReportオブジェクトはMeで参照しています。

リスト 1Reportオブジェクトを使用するプログラム
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

レポート1
Option Compare Database
Option Explicit

Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)

    If Me.都道府県コード.Value = 0 Then
       Me.郵便番号.Visible = False
       Me.都道府県名称.Visible = False
       Me.住所.Visible = False
    Else
       Me.郵便番号.Visible = True
       Me.都道府県名称.Visible = True
       Me.住所.Visible = True
    End If

End Sub

◆実行例
 このサンプルは、Reportオブジェクトを使ってレポートの印刷項目(テキストボックス)を操作するデモンストレーションです。

 レポート「レポート1」を印刷プレビューで開くと、データベースに登録されている住所録の一覧が表示されます。ただし、都道府県コードが0のレコードは「郵便番号」「都道府県名」「住所」が印刷されません。

図 2サンプルプログラムの実行結果
サンプルプログラムの実行結果


Copyright(C) 1999-2015 結城圭介(Ver.3.51) All rights reserved