- ベストアンサー
VBからAccessのマクロを動かしたい(最適化したい)
開発環境=NT4SP4 VB5 Access97 VBからMDBファイルを最適化するプログラムを作成しているのですが、 現在わかっているやり方は 最適化したファイルを作る→最適化元ファイルを削除→最適化後ファイルのファイル名を元ファイル名に直す。 という手順を踏んでいるのです。 これをAccessのマクロならば上記の手順のようにファイル削除したりしなくても 最適化が行えるそうなのです。 そこでVBからAccessのマクロを実行する方法がわからなくて困っているのです。 よろしくお願いいたします。
- mk_jmc
- お礼率10% (50/498)
- Visual Basic
- 回答数4
- ありがとう数2
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは 過去にExcelVBAからAccessマクロを実行するという質問に答えたことがあります。 VBでも同じですので下記アドレスを参考にして下さい http://oshiete1.goo.ne.jp/kotaeru.php3?q=314959
その他の回答 (3)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
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
お礼
VBでMDBファイルの最適化を行うにはこの方法が最もポピュラーのようです。 というかこの方法しか見つけることが出来ませんでした(^^; ま、ちゃんと最適化が終了してからリネームするみたいなのでこの方法で十分なのでしょう。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
VBでマク呼び出しの最適化って出来たっけ? RDOでやる方法があります。 サンプルどっかいっちゃったw
- Te-Sho
- ベストアンサー率52% (247/472)
VBからマクロを呼ぶのではなくmdbを開いたときにマクロを実行させると言う考えで行けば autoexecと言うマクロを作って置けばmdbを開いたときにそのマクロを実行します。 そのautoexecというマクロに最適化とmdbの終了を書いておけば良いのでは?
関連するQ&A
- VB6.0からAccess2007のマクロを呼び出す方法について
VB6.0からAccess2007のマクロを呼び出す方法について教えてください。 [vb6.0のソース] Private Sub ImportFile() Dim AccessMacro As Access.Application Set AccessMacro = GetObject("C:\test.mdb") AccessMacro.Run "Import" end Sub [test.mdbのマクロ] Public Sub Import() DoCmd.TransferText acImportDelim, "test インポート定義", "test", "C:\test.csv", False end Sub 上記の物を、XP+Access2003+VB6.0の環境でコンパイルし、Access2000が入っている環境で実行したところ、問題なくtest.mdbのマクロが実行できました。 (コンパイルした環境でも問題なく動作しました。) ところがこれをWin2003 + Access2007環境で実行したところ、 『実行時エラー 432 オートメーションの操作中にファイル名またはクラス名をみつけられませんでした。』 と表示されます。 おそらく、GetObject("C:\test.mdb")のところでエラーになっているものと思われるのですが、どのようにすれば原因が解消できるかが全くわかりません。 どなたがご教示ください。 よろしくお願いいたします。
- 締切済み
- Visual Basic
- VBからACCESSのマクロを起動できますか?
VB6でACCESSのテーブルを参照しています。 そのMDBの中にあるマクロをVB側から起動できないでしょうか? 教えてください。 宜しくお願いいたします。
- ベストアンサー
- Visual Basic
- VBからACCESSのデータを印刷するが2000とXPで・・・
OSが2000 VB6.0のSP5 ACCESS2000 の環境で開発してVBから下記のようにShell関数 でACCESSからの印刷をしているのですが 2000では印刷できるのですが XPでVB6.0のSP5 ACCESS2000の環境でコンパイルして実行しても 「起動するためのコマンドライン引数が不正です」 とメッセージがでてしまい印刷できません。 どなたか解る方がいましたら解答お願いします。 strMSACCESS = "C:\Program Fles\Microsoft Office\Office\MSACCESS.EXE" strCommand = strMSACCESS & " " & CurDir & "\AAA.mdb /x DoPrint /cmd " & "**" Work = Shell(strCommand, vbMinimizedFocus) AAA.mdbのあるフィールドの**の値のものだけを印刷しています。 Microsoft DAO3.6 Object Libraryを指定しています
- ベストアンサー
- Visual Basic
- VBからMDBのアクセス
VB初心者質問です。 開発環境 VB6 SP6 WIN2000 VB6からMDBの検索の手順について教えてください。 (質問) フォームに検索値用のテキストBOXを配置し、 その値でMDBのテーブルを検索し1件抽出する。 (検索値はテーブルのキー項目のため重複なし) 現在 Microsoft DAO 3.6 Object Library を参照しているので DAOで検索を行いたい。 知りたいことは検索の方法と 見つからなかった場合の判定についてです。 サンプルなどあればお願いいたします。
- ベストアンサー
- Visual Basic
- Access2000でAutoExecマクロを使用しています。マクロの
Access2000でAutoExecマクロを使用しています。マクロの条件にCommand()=""の時にアクションを実行するようにしています。 Access2000では問題ないのですが、このファイルをAccess2007で起動した場合、以下のメッセージが表示されて起動できません。 「指定した式に、microsoft office accessが見つけることができない関数名が含まれています。」 ちなみにファイル形式はmdbのままです。 以上、宜しくお願いします。
- 締切済み
- その他(プログラミング・開発)
- Access2000 マクロでデータベースの最適化
お世話になります。 Accessのマクロのコマンドで データベースの最適化をしたいのですが、 「マクロまたはVisual Basicコードの実行中に、開いているデータベースを最適化することはできません。」とういうエラーメッセージが出て最適化されません。 マクロの一連の流れの「最後」で、データベースの最適化をしたいと 思っていますが、具体的にどのようにすれば、 データベースの最適化を実行できるのでしょうか? 条件としては、最適化をVBAなどでするのではなく、 マクロのコマンド:データベースの最適化 でしたいと思っております。 また、過去に何度か質問したのですが、 私の質問文が悪く、希望する回答を えれませんでした。 勝手で申し訳ございませんが A.mdbファイルを「マクロコマンド:データベースの最適化」で 最適化する具体的手順を教えて頂けないでしょうか? ※最適化の手前で、データベースを閉じたり等 具体的手順以外の回答は結構ですので、 宜しくお願いします。 ※具体的手順を記載できない場合は、この質問は 無視して下さい。 宜しくお願いします。
- 締切済み
- その他(データベース)
- ACCESS と VB でこんなプログラムを作ろうとしています。どうやれば・・
今、VB と ACCESS を 使って簡単なプログラムを作ろうとしています。 ACCESSの中にはテーブルが1つだけあります。 そのテーブルの中のデータをVB上の DATAGRIDに単純に表示します。 ここまではできました。 GRIDへの表示は一度ワークテーブルに入れて そこから表示するのではなくて、 直接そのテーブルから表示しています。 今、そのテーブルの項目にPATHとファイル名 が入っていて、そのPATHにファイルがなかったら GRIDに× あれば ○を表示したいのです。 一度ワークテーブルに入れているのであれば、 あとで、そのワークテーブルを開いて、 ループさせて、DIR でひとつひとつ調べて 更新すればよさそうなのですが、 あくまで直接開きたいのです。 または、一時的なワーク (SQLServer上の##~~~みたいな感じの EXEを閉じたら勝手に消えるようなイメージのテーブル) をACCESSで実現できるならそれでもよいです。 こういう場合、どうやったら ○ と× を表示することができるのでしょう? 困っています。助けてください。 よろしくお願いします。 環境 VB6 SP5 ACCESS2000 Windows2000 SP3
- ベストアンサー
- その他(データベース)
- バッチファイルからAccessのマクロを操作する。
コマンドでACCESS2002のファイルを開けてそのファイルのマクロを操作するバッチファイル作成したいのが、よくわかりません教えてください。 "C:\Program Files\Microsoft Office2002\OFFICE\MSACCESS.EXE" "C:Sample\text.mdb" /x "mcr_test" ではマクロが動きません。
- ベストアンサー
- その他(データベース)
- インストール後の不具合について(VB6.0)
VB6.0でアプリケーションを開発しています。 実行ファイルを作成し、起動したところ、正常に動きました。 しかし、インストール後の実行ファイルは起動するのですが不具合が生じます。 (ディストリビューションウィザードでSetup.exeを作成し、インストールしました。) 正常に動く部分もありますが、あるコマンドボタンをクリックすると、固まってしまい、アプリケーション名の右に(応答なし)と表示されます。 コードに問題があるのでしょうか? 開発環境は以下の通りです。 OS:WindowsXP SP2 DB:Access2003 VB6.0からAccess 2003への接続方法はADOです。 宜しくお願いします。
- 締切済み
- Visual Basic
- VBのEXEのアクセス違反について
VB6.0にてソフトウェアを作成し、exe形式に保存しました。 それをVBがインストールされていないPCから起動したときに NTワトソン博士から下記メッセージが出ました 「アクセス違反 0xc0000005 アドレス0x6003cd9e」 ソフトウェアの開発環境は Win2000 Servicepack3 VB6.0 アクセス違反が起こったPCの環境は WinNT4.0 ServicePack6A 常駐ソフトウェアはありません。 他のNTユーザーの方でVBインストール無しの 所にも入れたのですが問題なく動きました。 今回アクセス違反が起こったものは 新しくNTをインストールしたものです。 アクセス違反をなくし、Exeを動かす方法はありますか?
- ベストアンサー
- Windows NT・2000
お礼
この方法で、Accessのマクロを動かすことが出来ました。 しかし、最適化のマクロ(キー送信のやつ)はAccess自体を起動していないと 機能しませんでした。残念。