最適化をしたい

「最適化をしたい」

最適化をしたいのですが、VBAやマクロを使うとどうしても最適化先のファイルを指示しなければなりません。
最適化先ファイルを指示せずに最適化するにはどうすればよいでしょうか。

回答

Access2002以降の場合であれば、以下で閉じる前に最適化ができます。
  Call Application.SetOption("Auto Compact", True)

以下だと最適化できるが、別名保存になってしまう。
  DBEngine.CompactDatabase

以下はダイアログが表示されてしまう
  RunCommand acCmdCompactDatabase

以下だとなぜか最適化だけが呼べない。
  DoCmd.DoMenuItem acFormBar, 6, 5, 1, acMenuVer70

しかしながら、SendKeys関数を使えば可能です。
ただし、独立スレッドで動くため、最適化後に何らかのプログラムを動かしたい場合は、
SleepというAPI関数などを用いてしばらく待たなければならないことに注意してください。

ソース

Function compact()
  '以下はSendKeysを使えば動くが、独立スレッドで動くので問題あり。
  SendKeys "%tdc", False
End Function