- ベストアンサー
accdbファイルの最適化について
- accdbファイルの最適化に関して質問があります。
- accdbファイルをAccessアプリケーションで開いてオプションで「閉じるときに最適化する」にチェックしておけば、ExcelVBAからaccdbファイルを開いて閉じたときに自動的に最適化されるのでしょうか。
- 現在、accdbファイルが肥大化しており、手動で最適化を行った経験があります。しかし、毎回手動で最適化するのは手間がかかるため、自動的に最適化される方法があれば知りたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「入力インターフェイスにExcel」 「同時利用者が数十名」 「ADO」で接続してデータ操作 「閉じるときに最適化する」にチェックしておいて、 「ExcelからAccessアプリケーションを呼び出してある資料をレポート出力」 という運用を考えているのですね。 No1、No2の回答でも言われてますが、ADOで接続して接続を閉じただけでは最適化されませんし、CreateObject で Access を起動しているのなら、Accessオブジェクトを閉じた時に最適化されます。 ただし、このような運用は、非常に危険だと思います。 例えば、誰かが ADOで接続してデータ操作しているときに、別のユーザーがレポートを印刷して閉じて最適化されたら、どうなるのか。 あるいは、二人がほとんど同時にレポートを開き印刷後閉じて、同時に最適化が始まったら、どうなるのか。 accdbファイルが破損する危険性が非常に高い運用だと思います。 最適化に失敗してデータファイルが消滅したという報告をまれにWEBでみることもあります。 レポートを印刷するたびに最適化を繰り返すというのはやはり破損の危険性を高めます。 No1の回答で紹介されているリンク先 http://office.microsoft.com/ja-jp/access-help/HA010341740.aspx でも、 > ネットワーク上で複数のユーザーが単一のデータベース ファイルを共有する場合を除き、最適化と修復を自動で行うようにデータベースを設定します。 というようにファイルを共有している場合は、最適化を自動で行うのは推奨していません。 accdbファイルを置いているサーバーが常時電源オンになっているなら、深夜など誰も使用していない時に、あるいは毎朝、電源を入れるならPC起動時に、自動で最適化するようにするのがいいかと思います。 安全性を重視するなら、バックアップをとってから最適化するようにするのがよりいいでしょう。Accessにおいては定期的なバックアップは必須です。 具体的な方法としては、Windowsのタスクで、上記のリンク先の最適化ショートカットのコマンドを実行させるようにします。
その他の回答 (2)
- m3_maki
- ベストアンサー率64% (296/460)
> そこで質問です.accdbファイルをAccessアプリケーションで開いてオプションで「閉じるときに最適化する」にチェックしておけば,ExcelVBAからaccdbファイルを開いて閉じたときに自動的に最適化されるのですか. > ただ,学期末処理をする際にExcelからAccessアプリケーションを呼び出してある資料をレポート出力します. CreateObject で Access を起動し、 OpenCurrentDatabase で accdb を開いてレポートを印刷する、 ということなら 最適化されます。 簡単なテストで確認できます。 参考まで。 オートナンバー型のフィールドを含む 「テーブル1」 を作成し、 データを数件入力します。 全件削除し、 再び入力し、オートナンバーが削除前の続きになることを確認します。 さらに数件入力してデータベースを閉じます。 Excel VBA で、次のコードを実行します。 Sub test() Dim appAcc As Object Dim strSQL As String Set appAcc = CreateObject("Access.Application") appAcc.OpenCurrentDatabase ThisWorkbook.Path & "\Sample.accdb" appAcc.Visible = True strSQL = "DELETE FROM テーブル1" appAcc.DoCmd.RunSQL strSQL appAcc.Quit End Sub Sample.accdb に テーブル1 があり 同じフォルダに Excel ファイルがある場合の例です。 環境にあわせて書き換えてください。 実行後に DB を開き、 テーブル1 のデータが削除されていることを確認、 データを入力すると、オートナンバーが リセットされていることが確認できます。 これは 「最適化」 の効果によるものです。
お礼
ありがとうございます.
- nicotinism
- ベストアンサー率70% (1019/1452)
>accdbファイルをAccessアプリケーションで開いてオプションで >「閉じるときに最適化する」にチェックしておけば, >ExcelVBAからaccdbファイルを開いて閉じたときに自動的に最適化されるのですか? ADOで接続して・・でしたら最適化は行われません。絶対に。 最適化を行っているのはMSACCESS.EXEです。 ExcelからADOで接続しているだけでしたらAccessは蚊帳の外です。 Access がインストールされているのなら、 起動オプションの Compact で済ませる手もあるかも知れません。 http://office.microsoft.com/ja-jp/access-help/HA010341740.aspx の最後の方。
お礼
ありがとうございます.
お礼
ありがとうございます.チェックは外して,手動最適化にします.