検証していませんが、次の方法があるかと思います。
1.データ用MDBとプログラム用MDBとに分けておき、後者を差し替える。
2.標準モジュールを差し替える。削除-->インポート
Application.VBE.ActiveVBProject.VBComponents.Remove Application.VBE.ActiveVBProject.VBComponents("Module1") Application.VBE.ActiveVBProject.VBComponents.Import "C:\Module1.bas"
3.標準モジュールを書き替える
Application.Modules のオブジェクトモデルを使う。
次の例は、指定した標準モジュールにプロシージャを新規に追加する例です。
Application.DoCmd.OpenModule "Module1" '開いておくのがミソらしい With Application.Modules("Module1") .InsertText ("Sub Hoge()" & vbCrLf) .InsertText (" MsgBox ""Hello"" " & vbCrLf) .InsertText ("End Sub" & vbCrLf) End With
Module オブジェクトは、いろいろなプロパティ、メソッドを持っています。
インテリセンスとヘルプで確認すると良いかと。
部分的に修正するのが面倒であれば、
DeleteLines
で全部消して、
InsertText
で新規に追加して保存するとか、
Application.Modules("Module1").AddFromFile "C:\Module1.bas"
2のようにファイルから取り込むとかいった方法がありそうです。
※ただし、こちらのページを見ますとセキュリティ設定が必要になるような事が書いてあります。
変更用のプログラムは何もACCESSでなくても良いですよね。
ACCESSでやるのであれば、ダブルクリックで起動したときに処理を走らせればよいですし、
EXCELでもできるでしょうし・・・
私のお勧めはWSH(VBScriptのバッチ)ですね。
Windows Scripting Host (WSH) にて、VBScript で Accessオブジェクトを操作すればできます。
WSHについて
http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/
http://www.atmarkit.co.jp/fwin2k/operation/wsh01/wsh01_01.html
VBScriptでAccessオブジェクトを作る
などが参考になると思います。
ですが・・・
余談ですが私でしたら、プログラムコード部分を書き替えたり、差し替えたりするのはしないとおもいます。
1.最新MDBを配布
2.ユーザがメニューから「旧版のデータを取り込み」のボタンを押して、
旧データをすべてインポート
(この部分のプログラムを作成する必要がある)
3.旧版の破棄
というような手順でやるかもしれません。
(テーブルのインポートとかであればセキュリティ制限にかかることもないと思います)
ありがとうございました。
参考にさせていただきます。
詳しく・丁寧なご回答ありがとうございます。
変更するものが、Access初心者のため、できましたら、ファイルをダブルクリックするだけで、変更できればと思っています。
そのようなものをAccessを使って作成することが可能でしょうか?