現在、作成したファイルを複数人で使用するため、accdeファイルで配布しています。
Accessのウインドウ左上の[ファイル]→[名前を付けて保存]→[ACCDEの作成]でコンパイルして作っているのですが、この作業が煩わしく、フォーム上のボタンでVBAからこの操作をすることは可能でしょうか?
vba内で拡張子だけ変えて自分自身をバックアップしても、まともなファイルは作れないことはわかりました。
もし上記が技術的に可能であればご教授頂きたくお願いします。ボタンに埋め込みたいのでコードでも、マクロビルダーでも構いません。
よろしくお願いいたします。
配布のやり方、やった事がないのに回答して申し訳ないですが、1回コンパイルして出来上がったファイルをコピペ配布するようなイメージを持っています。状況は、Aさんに配布する為に、1回コンパイル、続けて、Bさんに配布する為に再度もう1回コンパイル…という事なのでしょうか?それとも、例えば、50個のAccessファイルを手作業で50回コンパイルするのは大変という事でしょうか?
ググったら類似質問回答がありました。確かにあのバックアップの真似では無理そうですね。
T'sWare Access Tips #179 ~もう1つのAccessデータベースを開く方法(COM版
CommandBars.ExecuteMsoメソッド
idMsoの調べ方
あれやこれやとやったんですけど、accde作成ダイアログにうまくSendkey出来ずに詰みますね。
【EXCEL VBA | ノート】Windowハンドルを取得して、ファイル選択ダイアログボックスを操作する
WindowsAPI関数まで手を広げれば出来るのかもしれないけれど、挫折しました。
>> 3
あぁぁ〜さすがですわ。よく練られていますね。
ファイルはリンクテーブルで構成しています。Aさん、Bさん、Cさんはそれぞれ遠く離れた別の場所にいて、別々ののサーバーで閲覧をします。しかしそれぞれが別の拠点から大元のリンクテーブルにアクセスすると動作速度が遅くなるため、それぞれのサーバーにリンクテーブルを定期的にコピーし、それを閲覧専用として利用します。そのためそれぞれの環境に応じてリンク先をVBAで変更しています。
変更したものをそれぞれコンパイルして配布しているんですが、それって結局おっしゃるとおり50個のACCDEファイルができるということになりますね。なのでボタン一つでできないかなあという相談です。
50個のACCDEファイルを作成するという考え方ではなく、
ACCDEファイルの起動時にリンクテーブルのリンク先を適切に変更する処理を持たせれば、配布するACCDEファイルは一つですみます。
元のAccdbファイルに、リンクテーブルのリンクが切れていたらリンク先を変更するFunctionを作成しておきます。
変更するリンク先は、データベースファイルと同じフォルダーにあるテキストファイルにリンク先パスを格納しておいて、それを参照するようにします。
このFunctionをAutoExecマクロで起動時に実行するようにします。
最初に配布するときだけ、リンク先パスを格納したテキストファイルと一緒に配布して、同じフォルダーに入れておいてもらいます。
次回から、Accdeファイルのみ配布すれば、最初の起動時にリンク先を変更してくれます。
お二方ともご回答ありがとうございます。さすがです。
Aさん、Bさん、CさんともそれぞれログインIDとパスワードを設定していますので、ログインボタンでそれをトリガーにしてリンク先を切り替えるように組んでみます。
本当にありがとうございました。