- ベストアンサー
リンクテーブルを CopyObject するとリンク情報がコピーされる
ACCESSでリンクしたテーブルを DoCmd.CopyObject でカレントのmdbにコピーすると、テーブル本体ではなく、リンク情報がコピーされてしまいます。 リンクされたテーブルの本体をコピーするにはどうすれば良いのでしょうか。 データ用のmdbとプログラム用のmdbを分けていて、プログラム側からテーブルをバックアップしたいので、このような方法をとっていますが、他に良い方法があれば教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
DAOを使用した方法ですが... 適当なフォームにコンボボックスとコマンドボタンを配置して下さい 下記コードによって、掲題の事は可能だと思われます アレンジすれば、リンクテーブルの作成とかも可能です ※参照設定にて「Micorosoft DAO *.* Object Library」をチェックして下さい '------------------------------------------------- Private Sub Form_Open(Cancel As Integer) Dim Dbs As DAO.Database Dim Tdf As DAO.TableDef Dim strTbls As String Set Dbs = CurrentDb 'リンクテーブル一覧作成 strTbls = "" For Each Tdf In Dbs.TableDefs If Left(Tdf.Name, 4) <> "MSys" And Tdf.Connect <> "" Then strTbls = strTbls & Tdf.Name & ";" End If Next Set Dbs = Nothing 'コンボボックスにリンクテーブルを設定 Me.cmbTableName.RowSourceType = "Value List" Me.cmbTableName.RowSource = strTbls End Sub Private Sub cmdInportTable_Click() Dim Dbs As DAO.Database Dim Tdf As DAO.TableDef Dim strSrcDbs As String Dim strSrcTbl As String Dim strCpyTbl As String 'テーブルが指定されなければ抜ける If IsNull(Me.cmbTableName.Value) = True Then Exit Sub '対象テーブル設定 Set Dbs = CurrentDb Set Tdf = Dbs.TableDefs(Me.cmbTableName.Value) 'リンク先DB、リンクテーブル、インポート後の名前指定 strSrcDbs = Mid(Tdf.Connect, 11) strSrcTbl = Tdf.SourceTableName strCpyTbl = Tdf.SourceTableName '対象リンクテーブルをインポート Dbs.TableDefs.Refresh DoCmd.TransferDatabase _ acImport, _ "Microsoft Access", _ strSrcDbs, _ acTable, _ strSrcTbl, _ strCpyTbl '完了メッセージ MsgBox "[" & Tdf.Name & "] をインポートしました" Set Tdf = Nothing Set Dbs = Nothing End Sub
その他の回答 (1)
- taka_tetsu
- ベストアンサー率65% (1020/1553)
本体って、データの内容をコピーしたいってことですよね? テーブル作成クエリーを使用します。