レポートの基本オブジェクト
VBAでレポートを操作するにはReportオブジェクトを使います。Reportオブジェクトは、レポートと連結したデータを操作するときや印刷に関する設定を行うなど、レポート操作の基本となるオブジェクトです。
サンプルダウンロード
Reportオブジェクトを参照・取得する方法
Reportオブジェクトは、Me/Reports/Screen.ActiveReportを使って参照・取得できます。どの書式を使ってもReportオブジェクトを取得できますが、取得対象のレポートが異なります。
「レポートから別なレポートを参照する場合はReports」、「最前面のレポートを参照する場合はScreen.ActiveReport」、「実行中のVBAが記述されたレポートを参照する場合はMe」のように、各書式を場面に応じて使い分けます。
図 1
Me/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を使うと、自分自身を参照・操作していることが明確になるため、プログラムの読みやすさも向上します。
Reportオブジェクトの使用例
次のリストは、Reportオブジェクトを使用したプログラムの作成例です。プロシージャ「詳細_Format」は、レポート/詳細セクションのイベント「フォーマット時」のイベントプロシージャです。
このサンプルでは、レコードの内容によって一部の印刷項目(テキストボックス)を印刷するかどうかの制御を行っています。使用するテキストボックスはプログラムを記述したレポート内(自分自身)にあるため、ReportオブジェクトはMeで参照しています。
リスト 1
Reportオブジェクトを使用するプログラム
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
サンプルプログラムの実行結果
Access VBA Tips+α
レポート・サブレポート編
◆レポート操作の基礎知識
レポートの基本オブジェクト/Me Reports ActiveReport
レポートのセクションを操作する/Section
サブレポートを操作する
◆DoCmdでフォームを操作する
VBAでレポートを印刷する・印刷プレビューを表示する
/DoCmd.OpenReport
VBAでレポートを閉じる/DoCmd.Close
印刷部数やページ範囲を指定し印刷する/DoCmd.PrintOut
印刷ダイアログボックスを表示して印刷する
/DoCmd.RunCommand acCmdPrint
印刷プレビューの表示倍率を指定する
/DoCmd.Runcommand acCmdZoom75/他
◆レポート操作の基本テクニック
レポート名を取得/参照する/Name
レポートを印刷する時にデータを渡す・受け取る/OpenArgs
特定のレコードだけを抽出して印刷する
複数の抽出条件を組み合わせたレコード抽出と印刷
あいまいな条件を指定したレコード抽出と印刷
何件目のレコードを印刷しているか調べる/CurrentRecord
セクションをフォーマットした回数を調べる/FormatCount
現在のページ数を求める/Page
総ページ数を求める/Pages
ページ設定と印刷に使用するプリンタの設定を行う/Printer
次のレコードに進むかどうかを制御する/NextRecord
レポートの抽出条件(フィルタ)を参照する/Filter
レポートのレコードソースを設定・参照する/RecordSource
通常使うプリンタで印刷するかどうかを調べる
/UseDefaultPrinter
◆レポート操作の応用とサンプル
ページ全体に罫線を印刷する
データを横方向に取りまとめて印刷する
データがあるときだけ印刷する
一覧で選択したレコードだけを印刷する
ページ数を任意の番号から開始する
グループごとにPage/Pages形式のページ数を印刷する
:
[L]宛名ごとに枚数を変えて印刷する
[L]最前面のレポートを閉じる
[L]常に同じ倍率で印刷プレビューを表示する
[L]必ず同じプリンターで印刷する
[L]明細行に一連番号を印刷する
[L]レポートに印刷する総レコード数を求める
※[L]の項目は「レポート操作の基本テクニック」の該当する項目を案内するための逆引きリンクです。
◆ページ設定を行う(Printers, Printer)
1 余白を設定する
■DAOデータアクセス編
■ADOデータアクセス編
■クエリー(SQL)編
■フォーム・サブフォーム編
■レポート編
■Printerオブジェクト編
■コントロール基本編
■テキスト/コンボ/リストボックス活用編
■メニューバー・ツールバー編
■マクロ(DoCmd)編
■複数値と添付ファイル編
■Accessの操作と便利な機能編
■プログラミングサンプル編
■番外編1.HTTPやFTPを使うには
■サイト内を検索
Happy! Happy! Islandその他のコンテンツ
■
VBAプログラミング系
Access VBAのTipsとサンプル
Excel VBA(エクセルマクロ)のTipsとサンプル
VBScript/JScriptのTipsとサンプル
プログラミング基礎・入門
■
入門と使い方
Access入門と使い方講座97~2003/2007/2010/2013
Access VBAプログラミング入門 2013/2010/2007/2003
Excel入門と使い方講座2013/2010/2007
■
ダウンロードコーナー
AccessとExcelのフリーソフト
■
その他
質問受け付けコーナー「管理人に聞いてみよう♪」
BBS過去ログ広場
HTMLの書き方
管理人プロフィール
┗
twitter(外部サイト)
管理人へメール
■
別館(海外向けサイト)
Excel Games and Access Games
VBAプログラミング&Tips集の
"Happy! Happy! Island"トップページへ
[PR]管理人が心を込めて書いた本
■
最速攻略 AccessVBAサンプル大全集
Access 2013/2010/2007対応版
■
速効!ビジネスPC Accessマクロ&VBA
Access2013/2010/2007対応
■
最速攻略Accessクエリ テクニック大全集
Access2013/2010/2007対応
■
AccessVBAマクロ超入門講座 Access2010/2007対応
■
ExcelVBA超入門講座 Excel2010/2007対応
■
ExcelVBAでできる RPGゲーム作成入門
■
[改訂新版]実践COBOLプログラミング入門
■
最速攻略 VBScriptサンプル大全集
Windows7/Vista/XP/2000対応
(
アマゾン
へジャンプします)
[PR]注目の情報
転職成功の秘訣はサイトに公開されない求人にあった
採用人数が少ない・専門性が高い・競合他社に知られたくないなど、魅力的な求人情報ほど一般には公開できないのです。
株デビューするなら SBI証券!
業界屈指の格安手数料と業界最高水準のサービスで口座数はネット証券 No.1!口座開設料・管理料は無料。
GDOゴルフショップ
ゴルフ用品のオンラインメガストア。品揃え10万点!
アスタリフトコラーゲンドリンク
毎日続けるものだから・・まとめ買いで最大10%OFF!集中コラーゲンケアで、ハリと潤いの溢れる毎日へ。
[リンク]IT関連情報サイトなど
gihyo.jp
技術評論社提供のIT関連コンテンツサイト
Copyright(C) 1999-2015
結城圭介
(Ver.3.51) All rights reserved