Access2007 外部MDBコントロール
Access2007 外部MDBコントロール
使用OS:xp
Access:2007
いつもお世話になっております。
Access2007のVBA(GetObject)を利用して、外部MDBをコントロールしたいと考えております。
「実現したい内容」
3つのMDBが存在します。
A.mdb
B.mdb
C.mdb
A.mdbにコードを書いて、B.mdbにC.mdb内のレポート「レイアウト」をインポートします。
*******************************************************************************************************
Dim ACC As Access.Application
Set ACC = GetObject("B.mdbのフルpath") '外部MDBへ接続
DoCmd.SetWarnings False
On Error Resume Next
ACC.DoCmd.DeleteObject acReport, "レイアウト" 'レポートの削除
On Error GoTo 0
ACC.DoCmd.TransferDatabase acImport, "Microsoft Access", "C.mdbのフルpath", acReport, "レイアウト", "レイアウト", False
ACC.CloseCurrentDatabase
Set ACC = Nothing
*******************************************************************************************************
実行するとレポート「レイアウト」はB.mdbに格納(インポート)されるのですが、
その際、C.mdbが一旦起動し、データベースウインドウが開いて閉じる動作が走ってしまします。(当然だと思いますが)
その動きを止める(裏でコードが走る状態)ことはできないでしょうか。
以前Access2000で同じコードを実行したときは画面の切り替えはなく、裏で実行されていました。
過去質問をうまく検索できずご質問させていただきます。
ご教授の程宜しくお願い申し上げます。
お礼
確かに、 class C_cls { String a,b; C_cls() {} void setA(String set) { a = set; } void setB(String set) { b = set; } String getA() { return a; } } class B_cls { C_cls cls2; B_cls(C_cls c) { c.b = "YYY"; cls2 = c; } C_cls getC() { return cls2; } } class A_cls { public static void main(String[] args) { C_cls c = new C_cls(); B_cls b = new B_cls(c); c.setA("XXX"); C_cls cc = b.getC(); System.out.println(cc.getA()); System.out.println(c.b); } } で参照できました。実はサウンドプレイヤー [ http://users.goo.ne.jp/a-works/ ] なのですが、例えば(上記の)BクラスでDクラスのインスタンス を作り、Cクラスでインスタンス化したEクラスのイベントから (Bクラスでインスタンス化した)Dクラスのメソッドを実行させる みたいな事をしたかったと言うことと、クラスの再利用性を上げる ため、内部クラスにはできるだけしたくなかったという事です。 …初歩が全く分かってなかったようですね。何とでもなりそうです。 わざわざ教えて頂き、ありがとうございました。