ms_access_ファイルを開いた直後に_画面を占有するフォーム

ms accessのレストランのposシステム用のファイルを
オンラインで購入したのですが、

そのファイルを開くと、
レストランでのメニューを顧客から受ける画面が表示されます。


通常のaccessの画面の左側で
オブジェクトやテーブルの構造を確認したいのですが、
そのフォームの画面を非表示にできません。


htmlであれば、onloadのときにカスタムの関数を実行させることができますが、

同じようにしてこの accessのファイルも
ファイルのopenのイベントの時に 特定のフォームが画面を占有するように
設定しているのでしょうか?

そうでなければ、どのような処理を施して
起動直後に特定のフォームが画面を占有するようにしているのでしょうか?


alt + F11, イミディエイトウィンドウから命令を実行して
フォームをいったん閉じることができたので、

vbaでしょりしているのであれば、引き続きそのコードの部分を
特定して、一時的に フォームが画面を占有するのを解除したいのですが・・・

    ↓

Accessのファイルを開いたときに特定のフォームが
画面を占有するように設定されているのは、
通常以下のいずれかの方法によります。

### 1. **Accessの「オプション」設定でスタートアップフォームが指定されている**

   Accessでは、特定のフォームを起動時に自動で開くように設定できます。  
   
   - **確認方法:**  
     1. Accessのリボンで **「ファイル」 → 「オプション」** を開く。
     
     2. **「現在のデータベース」** の設定を確認する。
     
     3. **「表示フォーム」** に特定のフォームが設定されている場合、
        そのフォームが起動時に開く。

   - **解除方法:**  
     - 「表示フォーム」の設定を **「なし」** に変更すれば、自動で開かなくなる。

---

### 2. **VBA の `AutoExec` マクロや
    `Form_Load` イベントでフォームが開かれている**
    
   VBAで特定のフォームを起動時に表示するように指定している可能性があります。

   - **`AutoExec` マクロの確認:**
   
     1. **「ナビゲーションウィンドウ」(左側のオブジェクト一覧)を表示する。**
     
        - `F11` を押してもナビゲーションウィンドウが出ない場合、
        VBAで非表示にしている可能性がある。
        
     2. 「マクロ」カテゴリに **`AutoExec`** というマクロがあるか探す。
     
     3. `AutoExec` に `OpenForm` アクションが含まれている場合、
        それが原因。


   - **VBAの `Form_Load` イベントの確認:**
   
     1. `ALT + F11` を押して **VBAエディタ** を開く。
     
     2. 「プロジェクト エクスプローラー」で
        **そのフォームのコード** (`Form_フォーム名`) を開く。
     
     
     3. `Private Sub Form_Load()` の中に
     
     `DoCmd.Maximize` や
     `DoCmd.OpenForm` のようなコードがあるか確認。

   - **解除方法(イミディエイトウィンドウで一時的に閉じる):**
   
     `CTRL + G` を押してイミディエイトウィンドウを開き、以下を実行:
     
     ```vba
     
     DoCmd.Close acForm, "フォーム名"
     
     ```
     または、強制的にナビゲーションウィンドウを表示:
     
     ```vba
     
     DoCmd.SelectObject acTable, , True
     
     ```
     → これにより、テーブルビューを強制的に選択し、フォームの占有を解除。

---


### 3. **Accessの「ナビゲーションウィンドウ」が非表示になっている**

   - **解除方法:**  
   
     1. `F11` を押す(ナビゲーションウィンドウを表示)。
     
     2. もし表示されない場合、以下をイミディエイトウィンドウで実行:
        ```vba
        DoCmd.SelectObject acTable, , True
        ```
     3. これで、ナビゲーションウィンドウが表示され
        テーブルやフォームを直接編集できる。

---


### 4. **Accessの「オーバーラッピングウィンドウ」設定**

   もしフォームが全画面で開いている場合、
   「タブ付きドキュメント」ではなく「オーバーラッピングウィンドウ」が
   有効になっている可能性があります。
   
   
   - **設定を変更する方法:**
   
     1. `ALT + F11` でVBAエディタを開く。
     
     2. イミディエイトウィンドウで以下を実行:
     
        ```vba
        
        Application.SetOption "UseMDIMode", True
        
        ```
        
     3. これにより、フォームが全画面ではなく個別ウィンドウとして開くようになる。


---

### **結論**

#### 確認すべきこと:

1. **Accessオプションの「表示フォーム」設定をチェック**

2. **`AutoExec` マクロがフォームを開いていないか確認**

3. **フォームの `Form_Load` イベントで
    `DoCmd.Maximize` などを実行していないか確認**

4. **イミディエイトウィンドウでフォームを閉じて、
    ナビゲーションウィンドウを表示する**


もし、VBAのコード内でフォームの占有を解除したい場合、
 
`ALT + F11` → `CTRL + G` → 以下を実行:

```vba

DoCmd.Close acForm, "フォーム名"
DoCmd.SelectObject acTable, , True

```

これで一時的に解除できるので、
その後 `AutoExec` マクロや `Form_Load` を修正すれば、

次回以降は正常に開けるはずです。




コメント