人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBAについて質問です。x.mdbというmdbファイルがあります。この中に入っているデータとフォームを分離して1つのフォルダの中で管理したいと思います。例えばマイフォルダの中にx.mdbがあるとします。これをデータとフォームの2つのmdbにわけます。data.mdbとform1.mdbにします。form1.mdbのフォームを機動した時に、マイフォルダ以外にdata.mdbがあればエラーメッセージを出す。同一フォルダの中にdata.mdbがあればdata.mdbに接続するとうい形態をとりたいと思っています。これをどのように実現すればよいでしょうか?あくまでVBAでやりたいです。またx.mdbから2つにmdbをわける作業自体は普通にmdbファイルを作って、そこへdataとformをインポートするだけでよいのでしょうか?Access2003です。

●質問者: akaired
●カテゴリ:コンピュータ
✍キーワード:MDB VBA インポート エラーメッセージ データ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● SALINGER
●35ポイント

>そこへdataとformをインポートするだけでよいのでしょうか?

data.mdbやform1.mdbにインポートもしくはx.mdbからエクスポートするだけでいいです。


コードでは指定したマイフォルダにdata.mdbの存在チェック。

無ければファイルを取得するダイアログを開き、接続するデータベースを選択します。

data.mdbのパスさえわかれば後は接続するのはわかると思います。

Private Sub Form_Load()
  'マイフォルダのパスを指定
 Const myPath As String = "C:\abc\"
 Dim myName As String
 Dim Path As String
 
 Path = myPath & "\data.mdb"

 If Dir(Path) = "" Then
 With Application.FileDialog(msoFileDialogFilePicker)
 .Filters.Clear
 .Filters.Add "Accesssデータベース", "*.mdb"
 .AllowMultiSelect = False
 .Title = "接続するデータベースを選択してください"
 If CBool(.Show) Then
 Path = .SelectedItems(1)
 Else
 MsgBox "キャンセルされました。"
 Exit Sub
 End If
 End With
 End If
 
  '********************
  'data.mdbへの接続処理
  '********************
End Sub
◎質問者からの返答

ご回答ありがとうございます。mdbの存在チェックは理解できました。しかし、リンクを使わずに同一フォルダの中にあるmdbテーブルへどうやってVBAのみで接続すればよいかわかりません。どのようにおこなえばよいのでしょうか?


2 ● SALINGER
●35ポイント

ちょっと、間違いがありました。

>data.mdbやform1.mdbにインポートもしくはx.mdbからエクスポートするだけでいいです。

この後にテーブルをデザインヴューで開き、フォームのプロパティを出してデータのレコードソースというところを空白にしないといけません。


コードでレコードソースを指定する方法を追加するとこんな感じ。

Private Sub Form_Load()
  'マイフォルダのパスを指定
 Const myPath As String = "C:\abc"
  'テーブル名を指定
 Const myTable As String = "テーブル1"
 
 Dim myName As String
 Dim Path As String
 Dim sql As String
 
 Path = myPath & "\data.mdb"

 If Dir(Path) = "" Then
 With Application.FileDialog(msoFileDialogFilePicker)
 .Filters.Clear
 .Filters.Add "Accesssデータベース", "*.mdb"
 .AllowMultiSelect = False
 .Title = "接続するデータベースを選択してください"
 If CBool(.Show) Then
 Path = .SelectedItems(1)
 Else
 MsgBox "キャンセルされました。"
 Exit Sub
 End If
 End With
 End If

 sql = "SELECT * FROM " & myTable & " IN '" & Path & "'"
 Me.RecordSource = sql
End Sub
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ