🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

6437閲覧

AccessVBAにて、レポートビューから印刷プレビューに切り替えたい

yuriko_bridge

総合スコア3

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2021/01/15 08:22

前提・実現したいこと

Accessのレポートにて、以下のことを実現したいです。

①レポートを「レポートビュー」で表示。
②①の「レポートビュー」にて、ヘッダーに追加したボタンを押して、詳細の表示・非表示や並び順などを切り替える。
③①の「レポートビュー」にある「印刷プレビュー」ボタンより、同一レポートを印刷プレビューに切り替えて表示する。
このとき、②の設定を保持したい。

レポートを右クリックして「印刷プレビュー」を選択すれば簡単に実現できますが、
それをVBAにて実現したいです。

発生している問題・エラーメッセージ

印刷プレビューの表示が遅い。
1ページ目はすぐに表示されるが、Access自体が固まってしまい、動くまでに1分以上かかる。

該当のソースコード

Private Sub btn印刷プレビュー_Click()
DoCmd.OpenReport レポート名, acViewPreview
End Sub

試したこと

A.以下のように、一旦レポートを閉じてから印刷プレビューを表示すれば、
素早く表示されますが、②で切り替えた設定が保持されません。

Private Sub btn印刷プレビュー_Click()
DoCmd.Close acReport, レポート名
DoCmd.OpenReport レポート名, acViewPreview
End Sub

B.以下のように、Me.CurrentViewを変更しようとしても、
CurrentViewは変更できないプロパティのためエラーになります。

Private Sub btn印刷プレビュー_Click()
Me.CurrentView = acViewPreview
End Sub

補足情報(FW/ツールのバージョンなど)

Access 2016

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

印刷設定時に使用しているプロパティの一覧です。

[エクセルの神髄 ページ設定 PageSetup,PageBreak](https://excel-
ubara.com/excelvba1/EXCELVBA373.html)

また、印刷プレビュー時に印刷機との通信設定がTrueになっていると動作が遅くなるようです。

プリンターとの通信が有効かどうかを取得/設定する、Applicationのプロパティです。

PageSetupプロパティを設定するコードの実行速度を速くするには、PrintCommunicationプロパティをFalseに設定します。
PrintCommunicationがTrueのままページ設定を行うと、1行1行のプロパティ設定がとても時間がかかってしまいます。
少なくとも、複数のプロパティの設定を行う時はPrintCommunicationをFalseにしてから設定してください。

ExcelVBAではありますが該当サイトには印刷関連の情報も多いので一度目を通してみると良いと思います。

投稿2021/01/18 01:08

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatena19

2021/01/18 01:14

ExcelとAccessでは印刷設定は根本的に違いますので、そのページは参考にならないと思います。 AccessのApplicationには、PrintCommunicationプロパティはありません。
退会済みユーザー

退会済みユーザー

2021/01/18 01:19

すみません ACCESSではなかったのですね 誤った回答でした
yuriko_bridge

2021/01/18 01:57

ありがとうございます。 Excelの際には参考にさせて頂きます。
guest

0

A.以下のように、一旦レポートを閉じてから印刷プレビューを表示すれば、

素早く表示されますが、②で切り替えた設定が保持されません。

変更した設定をグローパル変数に保存しておいて、レポートを開く時に参照して設定すればどうでしょう。

投稿2021/01/15 10:25

hatena19

総合スコア34073

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuriko_bridge

2021/01/18 01:58

早速のご回答をありがとうございます。 試してみます。
yuriko_bridge

2021/01/18 05:42

以下ように、レポートを閉じる際に、「acSaveYes」で設定を保存する方法にて実現できました。 Private Sub btn印刷プレビュー_Click() DoCmd.Close acReport, レポート名, acSaveYes DoCmd.OpenReport レポート名, acViewPreview End Sub なお、メインメニューからレポートを呼び出す際は、初期設定に戻すようにしました。 どうもありがとうございました。
yuriko_bridge

2021/01/18 05:45

済みません、初めてのことで、ベストアンサーを選び間違えてしまいました。 大変申し訳ございませんでした。 hatena19さんには、他の件でも大変お世話になっております。 今後もよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問