フォームからレポートを開く際のVBAエラーについて

このQ&Aのポイント
  • フォームからVBAでレポートを開く場合、コントロールソースの設定でエラーが発生する問題があります。
  • レポートのLoadイベントでコントロールソースを指定することで、手動でレポートを開く場合は問題ありません。
  • しかし、フォームからレポートを開く際にはエラーが発生し、コントロールソースプロパティを設定できません。
回答を見る
  • ベストアンサー

アクセスについてです(レポート)

フォームからレポートを開く時に、 VBAでコントロールにコントロールソースを指定したいのですが どうやらエラーになってしまうようです。 フォームからではなく手動でレポートを開く場合は エラーにはなりません。 レポートのレコードソースは、T_testを指定していて、 その上にあるコントロールは非連結で指定したコントロールソースをvbaで入れたいです。 なので、レポートのLoadイベントで Private Sub Report_Load() Me.テキスト0.ControlSource = "8月" End Sub として、手動でレポートを開く分には問題ないのですが このコードのまま、フォームから Private Sub コマンド0_Click() DoCmd.OpenReport "レポート1", acViewPreview End Sub とすると、Me.テキスト0.ControlSource = "8月"で、 実行時エラー2191 印刷プレビュー時または印刷を開始した後は コントロールソースプロパティを設定できません。 のエラーが発生します。 フォームから Private Sub コマンド0_Click() DoCmd.OpenReport "レポート1", acViewDesign End Sub とすると、レポートのLoadイベントが発生しませんでした。 ご回答よろしくお願いします。

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

  • ベストアンサー
  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

Private Sub Report_Open(Cancel As Integer) にコードをかかれてはいかがでしょう。

trfbvmvjqblp
質問者

お礼

ご回答ありがとうございました。

関連するQ&A

  • 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」を実行する際に、デザインビューで開く画面が表示されるのですが、この画面を消すことはできないのでしょうか。

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

    アクセス初心者です。 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のVBAでプリンタを指定したい

    ACCESSでレポートを2つ作成し、フォームのボタンでレポートの印刷を行っています。 押されたボタンで、印刷するレポートが違うのですが、その時に、プリンタを指定したいのです。 Private Sub レポート印刷_Click() Dim stDocName As String stDocName = "レポート印刷" DoCmd.OpenReport stDocName, acNormal End Sub 上記のような感じで作っているのですが、それぞれのレポートで印刷するプリンタが違います。 どのようにしたらいいでしょうか?

  • アクセスフォームのサイズの調整について

    一つは全画面表示(Maximize)で開きもう一つは普通の表示(Restore)で開くには? フォーム1とフォーム2があります。画像をご覧ください。 フォーム1は Private Sub Form_Load() DoCmd.Maximize End Sub で、 フォーム2は Private Sub Form_Load() DoCmd.Restore End Sub としてます。 フォーム1にコマンドボタンを設置して、 Private Sub フォーム2を開く_Click() DoCmd.OpenForm "フォーム2" End Sub として、フォーム2を開くのですが、 フォーム2が開くとフォーム1まで、元の大きさに戻ってしまいます。 行いたいことは、 フォーム1は全画面表示、フォーム2は、ノーマルな表示(全画面でも最小化でもない) にしたいのですが、不可能なのでしょうか?

  • ACCESSフォームフィルタで抽出したデータのみをレポートで表示する方法

    フォームフィルターでデータを抽出した後,抽出されたデータのみをレポート上に表示させるコマンドボタンをフォーム上に作っています。 下記のコードを作成しましたが,これだと抽出前の全部のデータが表示されてしまいます。 どうしたら良いでしょうか。 Private Sub ラベルプレビュー_Click() Dim stDocName As String DoCmd.Echo False, stDocName = "rpt宛名ラベル" DoCmd.OpenReport stDocName, acViewDesign DoCmd.SelectObject acReport, stDocName, False ' Reports(stDocName).RecordSource = Me.RecordSource DoCmd.OpenReport stDocName, acViewPreview End Sub

  • プリンターを指定して印刷するには

    アクセスです。 フォームのコマンドボタンをクリックしてレポートを開きます。 VBAコードは Private Sub コマンド0_Click() DoCmd.OpenReport "レポート1" End Sub です。 レポートが開いたら、自動で印刷されますが、 それは、通常使うプリンタに設定しているプリンタで印刷されてしまいます。 そうではなく、 Bullzip PDF PrinterでPDF化させたいのですが、 レポートのイベントで、 Private Sub Report_Open(Cancel As Integer) End Sub で、プリンタを指定することは可能でしょうか? 通常使うプリンタは Bullzip PDF Printerにはしたくないのです。 わがまま言ってごめんなさい。

  • サブフォームのビューを切り替えたい

    親フォーム(フォーム1)にサブフォームとして、 テーブルをソースとするサブフォーム(テーブル1のサブフォーム)を配置しました。 親フォームからサブフォームのビューを変更したいのですが どうすればいいか教えてください。 親フォームのコマンドボタンにはそれぞれ Private Sub 単票フォームへ切り替え_Click() Me.Controls("テーブル1のサブフォーム").Form.DefaultView = 1 '帳票フォーム End Sub Private Sub 帳票フォームへ切り替え_Click() Me.Controls("テーブル1のサブフォーム").Form.DefaultView = 0 '単票フォーム End Sub としたのですが、 実行すると 実行時エラー 2136 "このプロパティを設定するには、フォームまたはレポートをデザインビューで開きます"。 となってしまいます。 Private Sub 帳票フォームへ切り替え_Click() DoCmd.SelectObject acForm, "テーブル1のサブフォーム" DoCmd.RunCommand acCmdFormView End Sub にしたところ、 実行時エラー 2489 “オブジェクト テーブル1が開いていません、” になります。 サブフォームに埋め込んでいて親フォームを開いていても 開いてない事になるのですね。 フォームビューの時に、切り替える事は不可能なのでしょうか? 帳票ビュー表示用フォーム、 単票ビュー表示用フォーム を作るしかないのでしょうか?

  • レポートで空データ時に印刷しない

    教えてください。 VBA「Private Sub コマンドボタン_Click()」で 「Docmd.OpenReport "レポート名"」の1文があるのですが、レポートプロパティで空データの時は印刷しないようなマクロ「全マクロの中止」を組んであります。 確かに、空データ時は中止がかかり印刷はされないのですが、実行時エラー2001 直前の操作はキャンセルされました。とエラーメッセージが帰ってきます。デバックをクリックすると、「Docmd.OpenReport "レポート名"」の一文が黄色くなっています。 どうしたら、綺麗に処理を終了する事ができるのでしょうか?教えてください。

  • access2003フォームの指定表示のみ印刷プレビューしたいのですが・・・?

     Access2003初心者なので詳しく教えていただきたいのです。  フォームで詳細に「請求月」とあり、コンボボックスでフィルターを  かける様にしています。  (請求月(H20.5月と書式設定)している)  フォーム上では、ちゃんとフィルターがかかり  指定データだけが詳細に表記しているのです。  フォーム上に「印刷ボタン」を作りイベントでクリックしたら  フォームの情報のみレポートプレビューしたいのですが  レポートに移動するとすべて表示されるのです。  指定したレコードだけレポートに表示したいのですが  どうしたらよいのでしょうか?  Private Sub BTN_印刷_Click() DoCmd.OpenReport "RPT_●●請求済", acViewPreview End Sub  上記ステートメントまではわかるのですが・・・?  申し訳ないのです、よい方法を教えていただけませんか。  説明不足かもしれませんがよろしくお願いいたします。

  • Accessのレポート印刷について教えて下さい。

    Accessのフォームでフィルタを使い絞り込んだデータをレポートで 印刷する場合について教えて下さい。 DoCmd.OpenReport "レポート名", acViewPreview, , Me.Filter では、フォームとレポートが同じレコードソースだと使えるという事ですが、 フォームとレポートのレコードソースが別の場合はどのようにすると フィルタで絞り込んだ条件のレポートを印刷できますか? 教えて下さい。よろしくお願いします。

専門家に質問してみよう