フォーム上の「閉じる」ボタンを押させてフォームやアクセスを閉じる方法です。
コマンドボタンウィザードで作成

「フォームデザイン」をクリックし、四角い「ボタン」を選択。
フォーム上にボタンを挿入します。

コマンドボタンウィザード起動。
「フォームの操作」から「フォームを閉じる」を選択。
※フォームではなくAccessを閉じるには「アプリケーション」から「アプリケーションの終了」を選択してください。

ボタンに画像表示させるかテキスト表示させるかを選択。
※個人的には融通のきく文字列が好き

ボタン名を指定。
なんでもいいですが、ここでは「close」としています。
マクロで作成
- ACCESSの「作成」→「マクロ」を選択
- アクションを選択
- Accessの終了
アクセス自体を閉じる - ウィンドウを閉じる
フォームを閉じる - データベースを閉じる
開いているAccessファイルを閉じる
- Accessの終了
- マクロ名をつけて保存

ボタンのプロパティシートを確認。
(F4で表示することが可能)
クリック時のところで、先ほど作成したマクロ名を選択する。
VBAで作成
「作成」から「Visual Basic」を選択すると以下のような画面が表示される。

「close」というボタンをクリックすると、Endまでの間に書き込まれたアクションを実行する、という意味。

ここで指定している「close」というボタン名は、プロパティ名の「名前」とイコールになる。
フォームを閉じる
以下を間に書き込むと、現在のフォームを閉じることができます。
DoCmd.Close acForm, Me.Name
こんな感じで。
Private Sub close_Click()
DoCmd.Close acForm, Me.Name
End Sub
「Me.Name」だと現在開いているフォームの意味ですが、フォームを指定することも可能です。
例えば「F_main」という名前のフォームを閉じたい場合、Me.Nameの代わりに“F_main”と記入します。
””は必須です。
Private Sub close_Click()
DoCmd.Close acForm, "F_main"
End Sub
閉じるときにオプションを追加することも可能です。
- acSaveNo ・・・ 保存しないで終了
- acSavePrompt ・・・ 保存要否を確認する
- acSaveYes ・・・ 保存して終了
Private Sub close_Click()
DoCmd.close acForm, Me.Name, acSavePrompt
End Sub
何も指定しない場合はデフォルトで「acSavePrompt」になります。
Accessを閉じる
ACCESSごと閉じる場合は以下を書き込みましょう。
Application.Quit
完成形はこんな感じです。
Private Sub close_Click()
Application.Quit
End Sub
閉じる際にオプションを指定できます。
- acQuitPrompt ・・・ 保存要否を確認させます
- acQuitSaveAll ・・・ 保存して閉じます
- acQuitSaveNone ・・・ 保存しないで閉じます
何も指定しない場合はデフォルトで「acQuitSaveAll」になります。
フォームを閉じて別のフォームを開く
ちょっとした応用です。
「close」と「Open」を使って、使用者に「このボタンを押して別ページに移動する」といった動作を行わせることができます。
Private Sub close_Click()
DoCmd.close acForm, Me.Name
DoCmd.OpenForm "F_main"
End Sub
“F_main”は、自分が開きたいフォーム名を指定してください。
閉じる際に常に最適化させる
アクセスを閉じる際に常に最適化させることが可能です。
次の一行をEnd subの前に記述します。
※最適化を行う場合は扱うデータ内容に支障がないか検討してください(自己責任ですよ)
また、共同利用している場合はタイミングによって破損する可能性もあります
SetOption "Auto Compact", True
Private Sub close_Click()
Application.Quit
SetOption "Auto Compact", True
End Sub