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` を修正すれば、
次回以降は正常に開けるはずです。
コメント
コメントを投稿