■ レポートの余白を設定する (2002,2003,2007)

図 レポートの余白を設定する
レポートの余白(上、下、左、右)を設定します。コンボボックスからレポートを選択すると、選択したレポートがプレビューモードで表示されます。さらに、レポートの余白がフォームのテキストボックスに表示されます。余白を変更したときは、[設定]ボタンをクリックしてレポートに反映します。
1. 新規データベース作成
Accessを起動したら、ツールバーから新規作成のアイコン
をクリックして、作業フォルダworkにW174.mdbを作成します。
2. レポート、モジュールをインポート
Windowsのエクスプローラから、174.mdb(このページの最後からダウンロードできます)をダブルクリックして開きます。データベースウィンドウのオブジェクトから[レポート]をクリックしたら、レポート(rptSample1, rptSample2, rptSample3)をドラッグしてW174.mdbのデータベースウィンドウにドロップします。同様の手順で、モジュール(basHelper)をドラッグ&ドロップします。レポート、モジュールがインポートされたら、174.mdbを閉じます。
3. 新規フォーム作成
データベースウィンドウのオブジェクトから[フォーム]をクリックして、右側の新規オブジェクトのショートカットから[デザインビューでフォームを作成する]をダブルクリックします。フォームのデザインビューが表示されたら、ツールボックスのコントロールウィザードが無効になっていることを確認します。
ツールボックスからコンボボックス、テキストボックス、四角形、ラベル、コマンドボタンをクリックしたら、図のようにフォームの詳細セクションに作成します。ツールバーからプロパティのアイコン
をクリックして、プロパティウィンドウを表示したら、表のようにプロパティを設定します。

図 フォームにコンボボックス、テキストボックス、コマンドボタンなどを作成する
表 フォームとフォームに作成したコントロールのプロパティ
|
コントロールの種類 |
プロパティ |
値 |
|
フォーム |
ポップアップ |
はい |
|
コンボボックス |
名前 |
cboReports |
|
値集合タイプ |
値リスト |
|
|
テキストボックス1(上) |
名前 |
txtTop |
|
テキストボックス2(下) |
名前 |
txtBottom |
|
テキストボックス3(左) |
名前 |
txtLeft |
|
テキストボックス4(右) |
名前 |
txtRight |
|
ラベル |
標題 |
余白(ミリ) |
|
背景色 |
16777215(白) |
|
|
境界線スタイル |
実線 |
|
|
コマンドボタン |
名前 |
cmdUpdate |
|
標題 |
設 定 |
4. コードビューに切り替えてイベント登録
ツールバーからコードのアイコン
をクリックしてVBEを表示します。コードビューが表示されたらOption Explicitの直後に、次のイベントとプロシージャを追加します。(イベントプロシージャは、ドロップダウンリストからオブジェクトとプロシージャを選択すると自動生成されますので、手入力する必要ありません。)
Private mstrReport As String
Private Sub Form_Load()
fsFillReportList Me.cboReports
End Sub
Private Sub Form_Unload(Cancel As Integer)
If Len(mstrReport) Then
DoCmd.Close acReport, mstrReport
End If
End Sub
Private Sub cboReports_AfterUpdate()
If Len(mstrReport) Then
DoCmd.Close acReport, mstrReport
End If
mstrReport = Me.cboReports.Value
DoCmd.OpenReport mstrReport, View:=acViewPreview
With Reports(mstrReport).Printer
Me.txtLeft = fsToMillimeters(.LeftMargin)
Me.txtRight = fsToMillimeters(.RightMargin)
Me.txtTop = fsToMillimeters(.TopMargin)
Me.txtBottom = fsToMillimeters(.BottomMargin)
End With
End Sub
Private Sub cmdUpdate_Click()
With Reports(mstrReport).Printer
.LeftMargin = fsFromMillimeters(Me.txtLeft)
.RightMargin = fsFromMillimeters(Me.txtRight)
.TopMargin = fsFromMillimeters(Me.txtTop)
.BottomMargin = fsFromMillimeters(Me.txtBottom)
End With
End Sub
5. フォームを開く
VBEのツールバーから表示(Access)のアイコン
をクリックして、Accessのウィンドウに切り替えます。Accessのツールバーからフォームビューのアイコン
をクリックしてフォームを開きます。コンボボックスからレポート[rptSample1]を選択すると、レポートの余白(上、下、左、右)が表示されます。さらに、レポートがプレビューモードで表示されます。レポートの余白を変更したときは、[設定]ボタンをクリックしてレポートに反映します。

図 コンボボックスからレポートを選択して余白を変える
●解説
コンボボックスからレポートを選択したとき、レポートの余白を表示するには、コンボボックスの更新後処理/AfterUpdateイベントを使用します。このイベントでは、コンボボックスから選択したレポートをプレビューモードで開いて、レポートの余白(上、下、左、右)をテキストボックスに表示します。なお、レポートの余白はtwipの単位(1440twips=1inch, 1inch=2.54cm)で格納されていますので、mmの単位に変換して表示します。
‘ コンボボックスの更新後処理イベント
Private Sub cboReports_AfterUpdate()
‘ コンボボックスからレポート名取得
mstrReport = Me.cboReports.Value
‘ レポートをプレビューモードで開く
DoCmd.OpenReport mstrReport, View:=acViewPreview
‘ レポートの余白を取得してフォームに表示する
With Reports(mstrReport).Printer
Me.txtLeft = fsToMillimeters(.LeftMargin) ‘ 左余白
Me.txtRight = fsToMillimeters(.RightMargin) ‘ 右余白
Me.txtTop = fsToMillimeters(.TopMargin) ‘ 上余白
Me.txtBottom = fsToMillimeters(.BottomMargin) ‘ 下余白
End With
End Sub
余白を変更して[設定]ボタンをクリックしたときは、クリック時/OnClickイベントでテキストボックスに格納されている余白をレポートに反映します。レポートの余白は、twipの単位で設定する必要がありますのでmmをtwipに変換します。
‘ 設定ボタンのクリック時のイベント
Private Sub cmdUpdate_Click()
‘ レポートの余白設定
With Reports(mstrReport).Printer
.LeftMargin = fsFromMillimeters(Me.txtLeft) ‘ 左余白
.RightMargin = fsFromMillimeters(Me.txtRight) ‘ 右余白
.TopMargin = fsFromMillimeters(Me.txtTop) ‘ 上余白
.BottomMargin = fsFromMillimeters(Me.txtBottom) ‘ 下余白
End With
End Sub