プロが教えるわが家の防犯対策術!

SQLite3をバックエンドにAccessを使用しています。
数台のPCで同時に使用したいため、SQLite3のファイルをクラウドに保存し、
各PCでリンクテーブルの参照を変えて使用します。
これを毎回手動でやるのは手間なので、VBAでやりたいのですが、
参考書の通りやっても、SQLiteだからか、できませんでした。
以下コードですが、丸写しなのでさっぱりです。
一応、Typeプロパティの値を"LINK"としているところが怪しいと思っているのですが・・・。
分かる方がいらっしゃったら助かります。

Public Function RefreshLinks(ByVal strFilePath As String) As Boolean

Dim cat As New ADOX.Catalog
cat.ActiveConnection = CurrentProject.Connection
Dim tbl As ADOX.Table
On Error GoTo eh
For Each tbl In cat.Tables
If tbl.Type = "LINK" Then
Debug.Print tbl.Name
tbl.Properties("Jet OLEDB:Link Datasource").Value = strFilePath
End If
Next
Set cat = Nothing
RefreshLinks = True
Exit Function
eh:
RefreshLinks = False

End Function

A 回答 (2件)

当方ADOXでやった事がないのでDAOになってしまいますがご参考に



Private objDB As DAO.Database
Private objTBDef As DAO.TableDef

Public Function RefreshLinks(ByVal strFilePath As String) As Boolean
  Dim tbl As Variant
  Set objDB = CurrentDb

On Error Resume Next
  For Each tbl In objDB.TableDefs
    If objTBDef.Connect <> "" Then
      'Debug.Print tbl.Name
      objTBDef.Connect = ";DATABASE=" & CStr(strFilePath) & ";TABLE=" & objTBDef.Name
      objTBDef.RefreshLink
    End If
  Next objDB.TableDefs
  objDB.Close: Set objDB = Nothing
  Exit Function

End Function
    • good
    • 0
この回答へのお礼

ありがとうございました。DAOでできました!

お礼日時:2015/11/06 09:49

すみません。

 Exit Function消し忘れました。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す