- ベストアンサー
Accessでの他ファイルとのリンク処理
- Access2000(OSはWindowsXP)で作った販売管理システムのスタートメニューを起動させたら、他のAccessファイル(顧客管理)にあるテーブル(住所録)の有無をチェックして、存在していればリンクし、存在していなければスタートメニューの処理を終了させるプログラムを作成中です。
- VBAで記述したく、インターネットを調べて下記のように書きました。途中までの記述ですが、住所録テーブルの有無(場合によっては顧客管理ファイルの有無でも構いませんが)を判断して、これらの処理をするには、どのように記述すればよいか教えて頂きたく思います。
- なお、データ(またはファイル)が存在していない場合には、「存在していません」のようなメッセージを出したく思います。基本的なことかも知れませんが、宜しくお願い致します。
- みんなの回答 (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
お礼
連絡が遅くなりました。 教えて頂いた内容を参考に作ってみましたら、うまくいきました。 大変助かりました。 どうもありがとうございました。 ところで参考までにお聞きしたいのですが、 Const mdbPath As String = "c:\顧客管理.mdb" If Dir(mdbPath) = "" Then MsgBox mdbPath & "が見つかりません" Exit Sub End If この記述は、mdbファイルしか存在の有無を認識しないものと思われますが、 例えば、WindowsのC:¥上で、右クリック→新規作成→フォルダ と操作して作った「新しいフォルダ」のような通常のフォルダの存在を認識するようなコマンドなどはあるのでしょうか? もしあれば、あわせて教えて頂ければ、と思います。