• ベストアンサー

アクセス2003 レポートの総ページ数の取得

アクセス2003 レポート VBAです。 先にレポートを開き、次にその用紙の設定をするフォーム「A」を開きました。 「A」にあるラベルにレポートの総ページ数を表示させたいのですが、レポートの[Pages]をどのように取得したらよいか教えて下さい。 Private Sub Form_Open(Cancel As Integer) ラベル.Caption = Str(Reports!レポート名![Pages]) End Sub のように、簡単に取得できたらいいのですが。。。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

こんな風では? docmd.OpenReport "レポート名",acViewPreview ,windowmode:=acHidden debug.print reports("レポート名").Pages docmd.Close acreport,"レポート名"

situmonnsya
質問者

お礼

うゎ!! すご、簡単。 参照の仕方がまずかったんですね。 ありがとうございます。

関連するQ&A

  • Access レポートでのラベルの表示について

    こんにちは。 Access2003,windowsXPです。 レポート機能で、ラベルにテーブルのデータを表示させているのですが、指定したテーブルが空白の場合、エラーが出ます。 NULL値でもエラーが出ないように設定したいのですが、方法はありますか? 参考までに(VBA) Private Sub Report_Open(Cancel As Integer)   Me!ラベル133.Caption = DLookup("テーマNo", "BMM", "ID = 1") Me!ラベル134.Caption = DLookup("テーマ名称", "BMM", "ID = 1") Me!ラベル135.Caption = DLookup("請求額", "BMM", "ID = 1") End Sub

  • Accessを使ってレポートを印刷する際に。。。

    No.2353071の続きなのですが、 Private Sub コマンド0_Click()   DoCmd.OpenReport "レポート1", acViewDesign   Reports("レポート1").Controls("ラベル0").Caption = "AAA"   DoCmd.Close acReport, "レポート1", acSaveYes End Sub このようにすると「DoCmd.OpenReport "レポート1", acViewDesign」を実行する際に、デザインビューで開く画面が表示されるのですが、この画面を消すことはできないのでしょうか。

  • Access2003 レポートの合計の出し方

    お世話になっております。 Access2003のレポートで下記のようなコードで価格の合計を求めようとしています。 1ページですとこれで合計は表示されるのですが、レポートが2ページ以降になると最終ページの合計が表示されます。 最終ページの最後にすべての合計を出したいと思っています。 ご教授いただければ幸いです。よろしくお願いいたします。 Option Compare Database Dim a As Variant Private Sub ページヘッダーセクション_Format(Cancel As Integer, FormatCount As Integer) a = 0 End Sub Private Sub グループヘッダー3_Print(Cancel As Integer, PrintCount As Integer) a = a + Me.価格 End Sub Private Sub レポートフッター_Print(Cancel As Integer, PrintCount As Integer) Me.合計 = a End Sub

  • Access ラベルの通貨スタイルの設定について

    こんにちは。 Access2003,windowsXPを使っています。 アクセスのレポート機能で、テーブルを指定して、ラベルに表示しています。 が、数字が枠の左によってしまいます。 また、テーブルで通貨形式にしても、レポートでは、通貨になりません。 ぜひ、使い方を教えて下さい。 参考までに(VBA) Private Sub Report_Open(Cancel As Integer) Me!ラベル133.Caption = DLookup("テーマNo", "BMM", "ID = 1")&"" Me!ラベル134.Caption = DLookup("テーマ名称", "BMM", "ID = 1")&"" Me!ラベル135.Caption = DLookup("請求額", "BMM", "ID = 1")&"" End Sub

  • アクセス 開いているレポート名を取得する。

    アクセス初心者です。 VBAにて フォーム1でレポート、レコードを選択後に レポートを開くと同時に印刷フォームも開くように組んでます。 その印刷フォームで印刷をすると、印刷フォーム自体が印刷されてしまうので ”レポート名”を認識させてから印刷しています。 その時の”レポート名”を開いたときに自動的に変数として印刷フォームに引き継ぎたいのですが やり方が分かりません。 意図としては、印刷フォームを汎用的に使いたいためです。 印刷フォームの呼び出しコードは下記にて Private Sub コマンド18_Click() Dim report_name As String Dim report_value As String If Not IsNull(コンボ50.Value) = True Then report_name = コンボ48.Value  ’レポート名です report_value = コンボ50.Value DoCmd.OpenReport report_name, acViewPreview, , "[現場名]='" & report_value & "'" DoCmd.MoveSize Width:=10000, Height:=13000 Reports(report_name).ZoomControl = 75 Else MsgBox "項目を選択してください。" End End If DoCmd.OpenForm "印刷_フォーム", acNormal End Sub Private Sub コマンド53_Click() Dim new_date As String Dim form_name As String If Not IsNull(コンボ48.Value) = True Then form_name = コンボ48.Value DoCmd.OpenForm form_name, acNormal, , , acFormAdd DoCmd.MoveSize Width:=12000, Height:=13000 Else MsgBox "[取引先名]を入力してください。" End If End Sub 下記は印刷フォームにて、印刷設定をする場合のコードです Private Sub コマンド0_Click() Dim report_name As String report_name = "レポート名" On Error Resume Next DoCmd.SelectObject acReport, report_name, True DoCmd.RunCommand acCmdPrint End Sub

  • アクセスレポートのグループごとのページ付番について

     Accessレポートのグループごとにおける、ページ付番についてお聞きします。  私なりにインターネットで調べて、下記モジュールを記述しました。レポートの状況は、次のとおりです。 ①グループ化している項目は「全体管理番号」で、ページはページフッターに「GPページ数」名のテキストボックスに表示しています。 ②「Pages」を参照するテキストボックス(コントロールソース =[Pages])を「総ページ取得」名で、ページフッターに非表示配置しています。 ※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※ Option Compare Database Dim d As Object Dim brk As Variant ------------------------------------------------------------------------------- Private Sub Report_Open(Cancel As Integer) Set d = CreateObject("scripting.dictionary") End Sub ------------------------------------------------------------------------------- Private Sub ページフッターセクション_Format(Cancel As Integer, FormatCount As Integer) If Me.全体管理番号.Value <> brk Then Me.Page = 1 brk = Me.全体管理番号.Value End If If Me.Pages > 0 Then Me.GPページ数 = Me.Page & "/" & d(Me.全体管理番号.Value) & "ページ"  End If End Sub ------------------------------------------------------------------------------- Private Sub 全体管理番号_フッター_Format(Cancel As Integer, FormatCount As Integer) If Me.Pages = 0 Then    d(Me.全体管理番号.Value) = Me.Page End If End Sub -------------------------------------------------------------------------------  この内容で印刷プレビューをした結果、複数ページになる場合は正しく表示になるのですが、複数ページにならない1ページのみの場合はなぜか「1/5ページ」や「「1/3ページ」となり、「1/1ページ」となりません。  「1/1ページ」表示となるようにするには、どこを修正すれば良いかお教え願いたいと思います。 どうぞよろしくお願いいたします。

  • ACCESSのレポートに売上の累計を計算させましたが・・・・

    ACCESS2002についてです。 テーブルに"売上日" "売上金額"とある中で"売上累計"を明細行毎にだそうと、本に書いてある下記のように入力しましたが、ページが変わってしまうと"売上累計"が合わなくなってしまいます。どうしたら解決できますか???? Option Compare Database Option Explicit Private curRuikei As Currency Private Sub Report_Open(Cancel As Integer) End Sub Private Sub レポートヘッダー_Format(Cancel As Integer, FormatCount As Integer) '累計のクリア curRuikei = 0 End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) '累計の加算 curRuikei = curRuikei + Me!売上金額 Me!売上累計 = curRuikei End Sub です。

  • Accessレポートで質問です

    VBA初心者です。レポート機能を使って履歴書を出力したいのですがうまく作れません。 内容は下記の通りです。 テーブルA(社員情報)<単票形式>:[社員コード]、[社員名] テーブルB(履歴情報)<表形式>:[社員コード]、[西暦]、[履歴内容] レポートA:テーブルAの全てのフィールドに連結 レポートB:レポートAのサブレポートとしてレポートA上に配置   フィールドは全てテーブルBに連結 <やりたい事> レポートAの[社員コード]とレポートB(サブ)の[社員コード]で連動させ、 レポートAの[社員コード]が変わると該当の履歴情報のみをレポートBに表示したい。 <現在の考え> テーブルAに連結したフォームA上に配置したあるコマンドボタンをクリックし 表示中の[社員コード]でレポートAとレポートB(サブ)にフィルターをかけて抽出する。 Private Sub コマンドボタン_Click() 処理A Reports("レポートA").Report.Filter = "社員コード = '" & Me!社員コード & "'" Reports("レポートA").Report.FilterOn = True  処理B Reports("レポートA").レポートB.Report.Filter = "社員コード = '" & Me!社員コード & "'" Reports("レポートA").レポートB.Report.FilterOn = True 結果  処理A--->抽出 ○ 処理B--->抽出 × その他レポートBに関しては上記処理Bを止め、「開く時」の処理として Private Sub Report_Open(Cancel As Integer) Me.Filter = "社員コード = '" & Parent("社員コード") & "'" Me.Report.FilterOn = True End Sub 「実行時エラー'2101'; プロパティの設定値として指定した値が正しくありません。」 と出て結果×でした。。 どなた様か解決案もしくは他に良い方法がありましたらご教授頂きたく宜しくお願い致します。

  • アクセス レポート バックカラーの変更方法

    現在レポートで1行ごとにバックカラーを変えて印刷しておりますが、それをチェックボックスにチェックがはいった行だけをカラーにするよう変更したいと考えておりますが、よくわかりません。現在のコードをコピーしました。お手数ですがご指導願います。 Option Compare Database Dim bline As Integer Private Sub Report_Open(Cancel As Integer) End Sub Private Sub ページヘッダー_Format(Cancel As Integer, FormatCount As Integer) bline = 0 End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) bline = bline + 1 If bline Mod 2 Then Me.Section(0).BackColor = 16777215 Else Me.Section(0).BackColor = 12663225 End If End Sub

  • Accessレポートでの改ページ

    Accessのレポートで、明細行を必ず8行ずつ印刷したいのです。 8行に満たない場合は、8行になるまで空白行を加えます。 そして、ヘーダー部に明細の金額合計があり、最終ページはヘッダー部を含めて8行にしたいので、明細行が7行となります。 とりあえず↓ 印刷する明細行数を常に8の倍数になるように空白行を作り、8行ごとに改ページしてみました。 しかし、最初の1ページ目はちゃんと8行で改行されますが、2ページ目からは、1行ずつしか印刷されません。 例えば、明細レコードが9レコードの場合、空白行含めて15行の明細をつくりました。 それを以下のプログラムで実行すると、9レコード目から15レコード目までは、1ページに1行ずつしか印刷されません。 どうすればいいのでしょうか? どなたかよろしくお願いします。 ***************************************************** Private Sub ページヘッダー_Format(Cancel As Integer, FormatCount As Integer) '印刷行の初期化 cntPage = 0 End Sub Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) '印刷行を更新 cntPage = cntPage + 1 If cntPage = 8 Then '改ページ Me.Section(acDetail).ForceNewPage = 2 '印刷行の初期化 cntPage = 0 End If

専門家に質問してみよう