• ベストアンサー

VBからAccessのマクロを動かしたい(最適化したい)

開発環境=NT4SP4 VB5 Access97 VBからMDBファイルを最適化するプログラムを作成しているのですが、 現在わかっているやり方は 最適化したファイルを作る→最適化元ファイルを削除→最適化後ファイルのファイル名を元ファイル名に直す。 という手順を踏んでいるのです。 これをAccessのマクロならば上記の手順のようにファイル削除したりしなくても 最適化が行えるそうなのです。 そこでVBからAccessのマクロを実行する方法がわからなくて困っているのです。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんにちは 過去にExcelVBAからAccessマクロを実行するという質問に答えたことがあります。 VBでも同じですので下記アドレスを参考にして下さい http://oshiete1.goo.ne.jp/kotaeru.php3?q=314959

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=314959
mk_jmc
質問者

お礼

この方法で、Accessのマクロを動かすことが出来ました。 しかし、最適化のマクロ(キー送信のやつ)はAccess自体を起動していないと 機能しませんでした。残念。

その他の回答 (3)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.4

RDOじゃなくJROでした。。。 ※Microsoft Jet and Replication Object 2.X Libraryを参照設定 Option Explicit Public Const CONNECTCONST  As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" Public Sub Main()   Call DbCompact("c:\db1.mdb") End Sub Public Sub DbCompact(inFilePath As String)   Dim objJROEngine  As JRO.JetEngine   Dim strWkDbPath   As String      '本当はここで重複しないファイル名をセットする   'ロジックはおまかせします   strWkDbPath = "c:\wk.mdb"      '最適化されたMDBを作成する   Set objJROEngine = New JRO.JetEngine   objJROEngine.CompactDatabase CONNECTCONST & inFilePath, CONNECTCONST & strWkDbPath   Set objJROEngine = Nothing   '削除   Kill inFilePath   'リネーム   Name strWkDbPath As inFilePath End Sub

mk_jmc
質問者

お礼

VBでMDBファイルの最適化を行うにはこの方法が最もポピュラーのようです。 というかこの方法しか見つけることが出来ませんでした(^^; ま、ちゃんと最適化が終了してからリネームするみたいなのでこの方法で十分なのでしょう。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

VBでマク呼び出しの最適化って出来たっけ? RDOでやる方法があります。 サンプルどっかいっちゃったw

  • Te-Sho
  • ベストアンサー率52% (247/472)
回答No.1

VBからマクロを呼ぶのではなくmdbを開いたときにマクロを実行させると言う考えで行けば autoexecと言うマクロを作って置けばmdbを開いたときにそのマクロを実行します。 そのautoexecというマクロに最適化とmdbの終了を書いておけば良いのでは?