- ベストアンサー
アクセス のエクスポート
1. アクセスで、モジュールやデザインを変更したフォームをエクスポートしたいのですが、エクスポート先のテーブルのデータに全く影響はないでしょうか。 2. モジュールも一緒にエクスポートされると思いますが、エクスポート先のテーブルにないフィールドなどを記述していると、エラーが発生することになるでしょうか。 3. 複数(あるいは全て)のフォームを一括してエクスポートする方法はないでしょうか。 4. 特に注意すべき点があれば、合わせて教えてください。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
1.フォームを一括してエクスポートする方法はないでしょうか データには影響ありません。 2.エクスポート先のテーブルにないフィールドなどを記述していると、エラーが発生することになるでしょうか。 当然エラーになります。 3.複数(あるいは全て)のフォームを一括してエクスポートする方法はないでしょうか。 確認したのは2003ですが、エクスポートは1つずつしかできませんが、インポートなら「全て選択」できるます。 4.特に注意すべき点があれば、合わせて教えてください。 同じ名前のフォームやテーブルをインポートした場合、後からインポートしたオブジェクトの名前の後に「_1」が付くので、インポートしたのに変わっていないと勘違いすることがあります。
その他の回答 (6)
- nicotinism
- ベストアンサー率70% (1019/1452)
To No5 のレス(もはや死語?)につきまして。 あはは、やっぱり。(^^ゞ レスありがとうございます。 怪答ご勘弁を。 削除対象かな? 退散します。
お礼
ご回答ありがとうございました。
- piroin654
- ベストアンサー率75% (692/917)
#3の2箇所の DoCmd.TransferDatabase acExport, "Microsoft Access", strPath, acForm, objNameIn, objNameIn のところが貼り付けたときに字数の関係で おかしくなっています。正確には、 Docmd以下の末尾にobjNameInがカンマで区切られて 二つ続きます。
お礼
ご回答ありがとうございました。
- piroin654
- ベストアンサー率75% (692/917)
#3です。もし、既存のフォームがあれば それを破棄して新たにフォームをエクスポート したいというのであれば、コードを少し 変更しますが、そのあたりはいかがですか。 それから、#4さんへ CurrentProjecプロパティはAccess2000以降です。
お礼
ご回答ありがとうございました。
- nicotinism
- ベストアンサー率70% (1019/1452)
Access97で動くか全く分かりませんが (^^ゞ 参考にしてください(ならないかも?) 動くなら少し手直しすればいけますよね? Sub test1() '自MDBのフォーム一覧 Dim objFrm As AccessObject For Each objFrm In CurrentProject.AllForms Debug.Print objFrm.Name Next objFrm End Sub Sub test2() '他MDBのフォーム一覧・削除 ※バックアップを取るか不要のファイルでお試しを! Dim appAcc As Access.Application Dim objFrm As Object Dim strPath As String strPath = "c:\要らない.mdb" Set appAcc = New Access.Application appAcc.OpenCurrentDatabase strPath For Each objFrm In appAcc.CurrentProject.AllForms Debug.Print objFrm.Name If objFrm.Name = "あのフォーム名" Then appAcc.DoCmd.DeleteObject acForm, objFrm.Name End If Next objFrm appAcc.CloseCurrentDatabase: Set appAcc = Nothing End Sub
お礼
ご回答ありがとうございました。
- piroin654
- ベストアンサー率75% (692/917)
Access97では同じ名前のフォームがあると エクスポートした場合、エラーが出る可能性が あるかもしれないので、同じ名前のフォームが ある場合はエクスポートしないようにしています。 同じ名前のフォームを置いてみたりして確認 してみてください。 このコードは他のバージョンのAccessでも使えます。 なお、他のバージョンで使用する場合はDAOにチェックを 入れてください。ADOより上位に設定するか、ADOの チェックをはずしてください。 Sub cmdTransferFormA() Dim dbIn As Database Dim rsIn As Recordset Dim dbOut As Database Dim rsOut As Recordset Dim strSQLIn As String Dim strSQLOut As String Dim strPath As String Dim objNameIn As String Dim objNameOut As String strSQLIn = "Select Name From MSysObjects Where Type = -32768" strSQLOut = "Select Name From MSysObjects Where Type = -32768" strPath = "D:\sample.mdb" Set dbIn = CurrentDb Set rsIn = dbIn.OpenRecordset(strSQLIn) Set dbOut = DBEngine.Workspaces(0).OpenDatabase(strPath) Set rsOut = dbOut.OpenRecordset(strSQLOut) If rsIn.RecordCount > 0 Then rsIn.MoveFirst Do Until rsIn.EOF objNameIn = rsIn!Name If rsOut.RecordCount > 0 Then rsOut.MoveFirst Do Until rsOut.EOF If rsIn!Name = rsOut!Name Then Exit Do Else DoCmd.TransferDatabase acExport, "Microsoft Access", strPath, acForm, objNameIn, objNameIn Exit Do End If rsOut.MoveNext Loop Else DoCmd.TransferDatabase acExport, "Microsoft Access", strPath, acForm, objNameIn, objNameIn End If rsIn.MoveNext Loop End If rsIn.Close: Set rsIn = Nothing rsOut.Close: Set rsOut = Nothing dbIn.Close: Set dbIn = Nothing dbOut.Close: Set dbOut = Nothing End Sub
お礼
ご回答ありがとうございました。
- PXU10652
- ベストアンサー率38% (777/1993)
3.「全て選択」メニューが見当たらないようなのでひとつづつエクスポートするしかないのでしょうね。 →2003でもエクスポートは1つずつです。モジュールを相手に渡すのではなく、インポートで相手側から最新のモジュールを貰うんです。 4.「たとえば「AAA」という名前のフォーム名が「AAA_1」に変わる、ということでしょうか。 それとも、上書きされずに併存する状態でインポートされるのでしょうか。」 →「AAA_1」に変わるので、元の「AAA」と併存するので、それに気を付ける必要があるのです。
お礼
ご回答ありがとうございました。
お礼
ご回答ありがとうございます。 1と2はわかりました。 3. 確認したのは2003ですが、エクスポートは1つずつしかできませんが、インポートなら「全て選択」できます。 : アクセス97です。 古すぎますかね・・・。 「全て選択」メニューが見当たらないようなのでひとつづつエクスポートするしかないのでしょうね。 4. 同じ名前のフォームやテーブルをインポートした場合、後からインポートしたオブジェクトの名前の後に「_1」が付くので、インポートしたのに変わっていないと勘違いすることがあります。 : フォームなどの【名前だけ】が変わって上書きされる、ということですよね。 たとえば「AAA」という名前のフォーム名が「AAA_1」に変わる、ということでしょうか。 それとも、上書きされずに併存する状態でインポートされるのでしょうか。