• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Accessでの他ファイルとのリンク処理)

Accessでの他ファイルとのリンク処理

このQ&Aのポイント
  • Access2000(OSはWindowsXP)で作った販売管理システムのスタートメニューを起動させたら、他のAccessファイル(顧客管理)にあるテーブル(住所録)の有無をチェックして、存在していればリンクし、存在していなければスタートメニューの処理を終了させるプログラムを作成中です。
  • VBAで記述したく、インターネットを調べて下記のように書きました。途中までの記述ですが、住所録テーブルの有無(場合によっては顧客管理ファイルの有無でも構いませんが)を判断して、これらの処理をするには、どのように記述すればよいか教えて頂きたく思います。
  • なお、データ(またはファイル)が存在していない場合には、「存在していません」のようなメッセージを出したく思います。基本的なことかも知れませんが、宜しくお願い致します。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

こんな感じで、Access2010で書いたので2000だとエラーになるかも? DAO 3.6?に参照設定が必要です。 タブインデントの代わりに全角スペースを使っています。 Sub test()   Dim DB As Database   Dim DB2 As Database   Dim tdf As DAO.TableDef   Dim i As Integer   Const mdbPath As String = "c:\顧客管理.mdb"   Const tblName As String = "MT住所録"        If Dir(mdbPath) = "" Then     MsgBox mdbPath & "が見つかりません"     Exit Sub   End If      For Each tdf In DB.TableDefs     If tdf.Name = tblName Then       DB.Execute ("drop table " & tblName) 'テーブル削除       Exit For     End If   Next      Set DB = CurrentDb   Set DB2 = DBEngine.OpenDatabase(mdbPath)   For Each tdf In DB2.TableDefs     If tdf.Name = tblName Then       i = 1       Exit For     End If   Next      If i = 0 Then     MsgBox mdbPath & " に " & tblName & "がありません"     DB2.Close: Set DB2 = Nothing     Exit Sub   End If      DoCmd.TransferDatabase acLink, , mdbPath, acTable, tblName, "リンクテーブル1"      '[切り離し]   'DoCmd.DeleteObject acTable, "リンクテーブル1"   DB2.Close: Set DB2 = Nothing End Sub

DANSAMA
質問者

お礼

連絡が遅くなりました。 教えて頂いた内容を参考に作ってみましたら、うまくいきました。 大変助かりました。 どうもありがとうございました。 ところで参考までにお聞きしたいのですが、   Const mdbPath As String = "c:\顧客管理.mdb"   If Dir(mdbPath) = "" Then     MsgBox mdbPath & "が見つかりません"     Exit Sub   End If この記述は、mdbファイルしか存在の有無を認識しないものと思われますが、 例えば、WindowsのC:¥上で、右クリック→新規作成→フォルダ と操作して作った「新しいフォルダ」のような通常のフォルダの存在を認識するようなコマンドなどはあるのでしょうか? もしあれば、あわせて教えて頂ければ、と思います。