質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

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

Access

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

Q&A

解決済

2回答

4193閲覧

Access 印刷ダイアログの位置を変えたい

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

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

Access

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

0グッド

0クリップ

投稿2019/07/09 00:45

##質問内容
Accessで一覧を印刷するときに、一覧をフォームで作ったものと、レポートで作ったものがあるのですが、フォームの方で印刷コマンドボタンを押したときに、レポートの印刷プレビューと印刷設定のダイアログの二つを表示するようにしてあります。

このときに、ダイアログを画面中央より左側、プレビューを画面中央より右側に位置を変え、お互いのウインドウが干渉しないようにしたいです。

因みに、印刷コマンドボタンを押したときは、とあるサイトを参考にし

VBA

1'---------------------------- 2'印刷ボタンクリック時 3'---------------------------- 4Private Sub Button_Print_Click() 5 6 Const cstrRptName As String = "顧客別売上実績表" 7 8 On Error GoTo Err_Handler 9 10 'レポートをプレビューで開く 11 12 DoCmd.OpenReport cstrRptName, acViewPreview 13 14 DoCmd.MoveSize 12000, 567, 7371 15 16 DoEvents 17 18 '印刷ダイアログを表示 19 20 DoCmd.RunCommand acCmdPrint 21 22 DoCmd.MoveSize 567, 567, 7371 23 24 DoEvents 25 26Exit_Here: 27 On Error Resume Next 28 29 'プレビューを閉じる 30 31 DoCmd.Close acReport, cstrRptName 32 Echo True 33 Exit Sub 34 35Err_Handler: 36 37 If Err.Number = 2501 Then 38 39 'エラーを無視する 40 41 Else 42 43 MsgBox "エラー発生" 44 45 End If 46 47 Resume Exit_Here: 48 49End Sub

のようになっています。
なお、プレビュー方は、右側に位置を変えることが出来ています。

回答よろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

印刷ダイアログは、モーダルウィンドウとして開きますので、閉じるまでは、他の部分は操作できないし、コードも閉じるまでは次のコードが実行されません。フォームをダイアログモード(acDialog)で開いたときの同じ動作と考えてください。

つまり、'DoCmd.RunCommand acCmdPrint'の後のコードは、印刷ダイアログを閉じるまで実行されないということです。

方法としては、WinAPIのSetWindowsHookExを使って操作する方法があります。下記にサンプルがあります。

vbaでmsgboxの位置を指定

WinAPIでフックを使うことになりますので、かなりのスキルが必要です。

別案としては、フォームで印刷ダイアログと同様の機能を持ったものを自作するという方法もあります。
印刷範囲や部数を設定するぐらいでいいのなら、こちらの方が簡単でしょう。

投稿2019/07/09 02:08

hatena19

総合スコア33699

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

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

退会済みユーザー

退会済みユーザー

2019/07/09 06:25

簡単にはいかないということですね。 上記のものを参考にさせていただきます。 回答ありがとうございました。
guest

0

office系などが提供するダイアログボックスの表示位置変更するのは難しいでしょうね。
通常表示位置などを変更しようとするには、ウィンドウのハンドルが必要なので、APIを駆使などすれば可能かもしれませんが。

印刷ダイアログはACCESSウインドウ内に表示されるので、印刷プレビューをポップアップして、アクセスウインドウと重ならないように調整は可能だと思います。

投稿2019/07/09 02:04

sazi

総合スコア25174

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問