こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ACCESSフォームを常に最前面に表示したい

ACCESSのフォームを常に最前面に表示したいと思っていましたが、それ以前にデータベースの作り込みのアドバイスをお願いすることが多く、お願いすることを後回しにしていました。しかし、少しでも手間を省きたいと思う様になりましたので、ご指導をお願いできればと思います。

アプリケーション:ACCESSヴァージョン2007

[オブジェクトの設定]
デスクトップにデータベースのショートカットを配置し、プロパティーの設定で「実行時の大きさ・・」を最小値にしています。

[気になっていること]
全てのフォームは「ポップアップ」を「はい」にしていますが、Access内のウィンドウに於いては最前面になりますが、ブラウザーなどのアプリケーションを開いたときはその背後に隠れてしまいます。

[実現させたいこと1]
1、Accessのオブジェクトを常に前面に表示させて、他のアプリケーションを全面にしたい時は、フォームの最小化ボタンで最小化させる。

[実現させたいこと2(可能であれば)]
最小化させたAccessのオブジェクトをショートカットキーで表示させることは可能でしょうか。可能であればアドバイスをお願いします。

以上、宜しくお願いします。

投稿日時 - 2020-04-06 05:31:42

QNo.9731842

困ってます

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

Office2007以前の場合のところにある記載の全体に変更してください。

標準モジュールに記載してください。標準モジュールは作成しないとないので左のツリー上のところで右クリックして作成してください。

他にも標準モジュールに記載と説明されているものは標準モジュールに記載してください。

投稿日時 - 2020-04-09 08:27:15

お礼

アドバイスを頂いて長いブランクがありましたが、下記を標準モジュールに書き込みましたところ、ACCESS2007が最前面に表示される様になりました。それと、フリーのアプリケーション「最前面でポーズ 2.00(pause_200)」で最前面を切り替えることが可能なことも知りました。ご返事は遅くなりましたが、関連情報も得ることができましたので、対応いただいたこと感謝いたします。ありがとうございました。

[Accessの画面を他のアプリケーションより常に最前面に出す方法]

1、リボンの「作成」タブを選択し「マクロ」メニューから標準モジュールを選択する。
2、表示されたエディター「無地画面」に下記の記述を張り付ける。

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 wFlags As Long) As Long
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOSIZE = &H1
Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2

Public Sub SetWindowTop(hWnd As Variant, flgTop As Boolean)
If flgTop Then
SetWindowPos hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE
Else
SetWindowPos hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE
End If
End Sub

3、対象のオブジェクトに以下記述をコーティング。

スタートフォームのイベント「読み込み時」に記述する
Call SetWindowTop(hWndAccessApp, True)

「設定後に解除したい時は以下に書き換え」
Call SetWindowTop(hWndAccessApp, False)


[追伸、お詫び申し上げます]
質問のタイトル「コンボボックスのテキスト窓にデータを表示させたい」に於いて、私の不慣れ「サイトの利用熟知不足」もあり、不愉快な思いをされたことお詫び申し上げます。最大の原因は、ACCESS作成プロセスに於いて知識の集約不足であると痛感しております。本当に申し訳ございませんでした。今回も貴重なアドバイスをありがとうございました。

投稿日時 - 2020-04-23 05:30:48

ANo.3

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

Windows APIはWindwsの機能をAccessのイベントプロシージャ(などWindowsで動いているソフトから)で使うというものです。

紹介したサイトの

(1) Windows API の SetWindowPos の宣言
のコードの

Public Const HWND_TOPMOST = -1
Public Const SWP_NOSIZE = &H1
Public Const SWP_NOMOVE = &H2

より上の部分を

(4) 対応バージョン
Office2007以前にも対応させる必要がある場合は、下記リンクを参考に書き換えてください。
のリンク先にある

(ii) Office2007以前の場合
のところにあるコードと変更して

後はサイトの説明の通りに設定して利用してください。

投稿日時 - 2020-04-08 07:22:29

補足

ありがとうございます。キーボードで、「Altキー」を押しながら「F11キー」を押すと、VBE エディターをきどうさせて、切り張りして貼り付けたもののコードが赤色になります。甘ったれたことを言ってはいけませんが、下記をどの様に変更すればよろしいでしょうか。恥ずかしながらお尋ねします。


(1) Windows API の SetWindowPos の宣言のコードの

Public Const HWND_TOPMOST = -1
Public Const SWP_NOSIZE = &H1
Public Const SWP_NOMOVE = &H2

より上の部分を「以下の記載ですが・・・」


Declare PtrSafe Function SetWindowPos Lib "user32" ( _
ByVal hwnd As LongPtr, _
ByVal hWndInsertAfter As LongPtr, _
ByVal x As Long, _
ByVal y As Long, _
ByVal cx As Long, _
ByVal cy As Long, _
ByVal wFlags As Long) As Long


(4) 対応バージョン
Office2007以前にも対応させる必要がある場合は、下記リンクを参考に書き換えてください。
のリンク先にある

(ii) Office2007以前の場合のところにあるコードと変更します。「記載の全体ですが・・・」


#If VBA7 Then
Public Declare PtrSafe Function SetWindowPos Lib "user32" _
(ByVal hwnd As LongPtr, _
ByVal hWndInsertAfter As LongPtr, _
ByVal X As Long, ByVal Y As Long, _
ByVal cx As Long, ByVal cy As Long, _
ByVal wFlags As Long) As Long
#Else
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 wFlags As Long) As Long
#End If

申し訳ございません。

投稿日時 - 2020-04-09 05:39:09

ANo.1

Accessフォームを常に最前面に表示する
https://hatena19.com/always-display-the-access-form-on-top/
最後の方に2007の場合は一部書き換えをするためのリンクがありますのでそちらも参考にしてください。

投稿日時 - 2020-04-06 07:11:55

お礼

アドバイス本当にありがとうございます。しかし、私にとってデータベース全体に対するコーティングはハードルが極めて高く、残念ながら先に進めないでいます。データベースのオブジェクトに対するコーティングは、なんとか少しづつでも追従ができましたが、本当に申し訳ございません。勝手で身勝手ではありますが(申し上げますが・・)、今回のテーマは基本的な機能「全てのデータベースに共通」に関することであり、成功させたい希望は持っています。申し訳ございませんが、今少しご誘導的「暗がりに明かりみたいな・・」なアドバイスをお願いできませんでしょうか。すいません。

投稿日時 - 2020-04-08 04:50:31

あなたにオススメの質問