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

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

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

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

Access

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

Q&A

解決済

4回答

9920閲覧

ACCESSウィンドウのサイズを制御できないでしょうか?

DreamTheater

総合スコア1095

VBA

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

Access

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

0グッド

0クリップ

投稿2020/03/03 23:12

背景

ACCESSで作成したシステムがあります。
起動時にACCESSウィンドウをタスクトレイに隠す設定にしてフォームのみ
表示しているのですが、何かの拍子にタスクトレイのACCESSアイコンをクリックした
時にACCESSウインドウがフルスクリーン表示され、ACCESS以外のアプリに切り替えが
出来ないので何とかならないかと相談を受けています。

もちろんALT+TAB等でタスク切り替えはできるのですが、利用部門にはPC操作に
不慣れな方もいて、できればVBAからACCESSウィンドウのサイズを制御したいの
ですが、良い方法はないでしょうか?

現在初期表示フォームのForm_Loadで行っていること。

Private Sub Form_Load() Call ShowWindow(Application.hWndAccessApp, com_con_SW_SHOWMINIMIZED) DoCmd.ShowToolbar "Ribbon", acToolbarNo End Sub

改善したいこと

起動した契機でACCESSウィンドウのサイズを
イメージ説明
上図のように小さくしてしまいたいのです。

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

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

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

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

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

guest

回答4

0

CloseWindow APIHWndAccessApp メソッド
を利用して、Accessウインドウを最小化できます。

以下は開いているフォームに上記の処理の実行用ボタンのクリックイベントを想定したコードです。
※フォームを閉じて開きなおすのは、ポップアップしたフォームであっても最小化時に一緒に最小化されるからです。

VBA

1 Declare PtrSafe Function CloseWindow Lib "user32" (ByVal hwnd As LongLong) As Long 2 3Private Sub Reload_Click() 4 5 DoCmd.Close acForm, "フォーム名" 6 CloseWindow Application.hWndAccessApp 7 DoCmd.OpenForm "フォーム名" 8End Sub

投稿2020/03/04 03:58

編集2020/03/04 04:07
sazi

総合スコア25195

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

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

DreamTheater

2020/03/04 04:14

saziさん ご回答ありがとうございます。 CloseWindow のセンテンスをForm_Loadに記述して実行したところ、確かに最小化してタスクトレイに格納されるのですが、タスクトレイアイコンをクリックすると、元通りACCESSウィンドウが表示されてしまいます。 (質問事項「背景」の3~4行目の部分が解決できないのです。)
sazi

2020/03/04 08:02

再度同じ操作をしても、何度でも可能な様に、フォームに実行ボタンを配置してというのが回答内容です。
DreamTheater

2020/03/04 23:05

saziさんありがとうございます。 各フォームにボタン配置してフルスクリーン化の際利用者にボタンクリックしてもらうよりは、 ACCESSウィンドウを最低限の大きさで表示させれば利用者操作不要と考え、解決策に至った次第です。
sazi

2020/03/05 00:25

画面の構成にもよりますから、あくまで一案として、解決積みの所でしたが回答しました。 現対処より良いという意味ではありません。 その他の対処としては、タスクバーをクリックされてもその動作は画面の枠外で行われるようにする、Accessウインドウを画面の枠外に移動する方法です。
DreamTheater

2020/03/05 00:29

ありがとうございます。 今後の開発の際参考にさせて頂きます。
guest

0

自己解決

こちらのサイトを参考にしたところ自己解決できました。

標準モジュールに以下を追加

'ACCESSウィンドウサイズ変更 Public Declare Function SetWindowPos Lib "user32" _ (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, _ ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, _ ByVal fuFlags As Long) As Long Public Declare Function GetSystemMenu Lib "user32" _ (ByVal hWnd As Long, ByVal fRever As Long) As Long Public Declare Function RemoveMenu Lib "user32" _ (ByVal hMenu As Long, ByVal uItem As Long, ByVal fuFlags As Long) As Long Public Const SWP_NOMOVE = &H2 Public Const SWP_NOSIZE = &H1 Public Const HWND_TOP = &H0 Public Const SC_SIZE = &HF000 Public Const SC_MAXIMIZE = &HF030 Public Const SC_CLOSE = &HF060 Public Const SC_RESTORE = &HF120 Public Const MF_BYCOMMAND = &H0&

クラスモジュール(Form_OpenまたはForm_Load)に以下を追加

Dim hWnd As Long 'ACCESSウィンドウサイズ変更 hWnd = Application.hWndAccessApp SetWindowPos hWnd, HWND_TOP, 0, 0, 25, 10, SWP_NOMOVE hWnd = GetSystemMenu(hWnd, 0) RemoveMenu hWnd, SC_SIZE, MF_BYCOMMAND

元々のコードと合わせ、

  • ACCESSウィンドウを最小化してタスクトレイに隠す
  • ACCESSアイコンをクリックすると縮小(25×10)画面が表示される

が実現できました。

sinzouさん、yureighostさんフォローありがとうございました。

投稿2020/03/04 01:14

DreamTheater

総合スコア1095

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

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

0

ポップアップ、されているのでしょうか
メインフォームは、こちらの方法はいかがでしょうか。

投稿2020/03/04 00:41

編集2020/03/04 00:43
sinzou

総合スコア392

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

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

DreamTheater

2020/03/04 00:55

sinzouさん 回答ありがとうございます。 紹介のサイトも試してみましたが、ACCESSウィンドウサイズそのものは制御出来なかったのです。。。
sinzou

2020/03/04 01:00

ポップアップと別にaccsessのウインドウが表示されて困る。 ですよね こちらのサイトは、ポップアップさせず、accsessのウインドウ内で処理しているようですが
DreamTheater

2020/03/04 23:08

sinzouさん すみません、勘違いしていました。
guest

0

Excelの操作では確認したコードですが。

VBA

1With Application 2 .WindowState = xlNormal 3 .Width = 1 4 .Height = 1 5End With

こちらでいけませんか?

投稿2020/03/04 00:34

yureighost

総合スコア2183

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

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

DreamTheater

2020/03/04 00:53

yureighostさん 回答ありがとうございます。 残念ながらACCESSのApplicationオブジェクトにはWindowState/Width/Heightプロパティはないようです。。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問