AccessVBAのレポートで集計をしようとした際、グループ化が必要、ということはわかったのですが、グループ化の方法がわからなくてしばらく詰まったので、備忘録として書いておきます。
##レポートで項目のグループ化
Dim NewGroupLevel As Variant
NewGroupLevel = CreateGroupLevel(NewReport.Name, 基準とする項目名, グループヘッダーを作成するかどうか, グループフッダーを作成するかどうか)
基準とする項目名
グループ化する際にまとめる項目の名前
指定した項目の同じ値のものがグループ化される
グループヘッダーを作成するかどうか
True 作成する
False 作成しない
グループフッダーを作成するかどうか
True 作成する
False 作成しない
##その他AccessVBAメモ
###Excelインポート
DoCmd.TransferSpreadsheet acImport, , インポート後のテーブル名, インポートファイル名, 一行目をフィールド名として使用するかどうか
インポートファイル名
インポートするExcelファイルのパスを""で囲って指定
一行目をフィールド名として使用するかどうか
True 使用する
False 使用しない
###レポート作成
Dim NewReport As Report
Set NewReport = CreateReport()
DoCmd.Restore
###レポートのレコードソースを指定
NewReport.RecordSource = "sample"
"sample"
レコードソースとするテーブル名など
###レポート上でのラベル作成
Dim NewLabel As Label
Set NewLabel = CreateReportControl(NewReport.Name, acLabel, acPageHeader, "", "", x, y, w, h)
NewLabel.Caption = "ラベルに表示する文字列など"
acPageHeader
ラベルを作成する箇所
その他の箇所の指定
acDetail 詳細 acFooter フッター acGroupLevel1Footer グループ レベル 1 フッター acGroupLevel1Header グループ レベル 1 ヘッダー acHeader ヘッダー acPageFooter ページ フッター acPageFooter ページ ヘッダーx(ラベルの横位置),y(ラベルの縦位置),w(ラベルの幅),h(ラベルの高さ)
1cm = 567
###レポート上でのテキストボックス作成
Dim NewTextBox As TextBox
Set NewTextBox = CreateReportControl(N_Report.Name, acTextBox, acDetail, "", "", x, y, w, h)
NewTextBox.ControlSource = "レポートソースとしたテーブル内の項目名"
.ControlSource
関係ない文字列を指定すると他のビューでエラーになる?ため、表の項目などはラベルで作成する
###グループ化した表の集計
Dim TotalTextBox As TextBox
Set TotalTextBox = CreateReportControl(N_Report.Name, acTextBox, acGroupLevel1Footer, "", "", x, y, w, h)
TotalTextBox.ControlSource = "=Sum([集計を行う項目名])"
acGroupLevel1Footer
作成したグループのフッターにテキストボックスを作成して集計