• ベストアンサー

リンクテーブルを CopyObject するとリンク情報がコピーされる

ACCESSでリンクしたテーブルを DoCmd.CopyObject でカレントのmdbにコピーすると、テーブル本体ではなく、リンク情報がコピーされてしまいます。 リンクされたテーブルの本体をコピーするにはどうすれば良いのでしょうか。 データ用のmdbとプログラム用のmdbを分けていて、プログラム側からテーブルをバックアップしたいので、このような方法をとっていますが、他に良い方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

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)
回答No.2

本体って、データの内容をコピーしたいってことですよね? テーブル作成クエリーを使用します。

関連するQ&A