使用VBA代码更新外部数据源链接

时间:2019-01-04 23:35:47

标签: external-data-source

我希望使用VBA更新外部输入文件的链接。我是一名开发人员,将链接的输入文件放置在生产文件夹中后,使用的链接输入文件的路径将与最终用户所需的路径不同。

是否可以使用VBA更新链接文件的位置?我已经有了允许用户指定输入文件位置的代码,并且该信息保存在[Defaults]表的[InputFolder]中。是否可以使用VBA通过InputFolder字段信息更新链接表?

存储的InputFolder数据如下所示: C:\ Users \ CXB028 \ OneDrive-Comerica \ Projects \ HR \ Input Data

新文件夹信息将定义一个我无法访问但用户可以访问的网络驱动器位置路径。

这是我用来定义和存储“输入文件夹”位置的代码:

Private Sub btnInputFldr_Click()
On Error GoTo Err_Proc

Const msoFileDialogFolderPicker As Long = 4
Dim objfiledialog As Object
Dim otable As DAO.TableDef
Dim strPathFile As String, strFile As String, strpath As String
Dim strTable As String
Dim fldr As Object

Set fldr = Application.FileDialog(msoFileDialogFolderPicker)

With fldr
    .Title = "Choose Folder"
    .Show
    .InitialFileName = "" 'DFirst("InputFolder", "Defaults")

        If .SelectedItems.Count = 0 Then

            Exit Sub

        Else
            CurrentDb.Execute "UPDATE Defaults SET InputFolder='" & .SelectedItems(1) & "';"

        End If

End With

Me.txtInputFldr.Requery

Exit Sub

Err_Proc:
    MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritical, "Process Error"

End Sub

在重新定义新的输入文件夹后,使用VBA代码将数据库移动到生产位置后,需要重新链接链接表(外部excel电子表格)。

1 个答案:

答案 0 :(得分:0)

我找到了一些非常简单且简短的代码,效果很好!!请参见下面。

 On Error Resume Next
 'Set new file path location if the TABLE.FIELDNAME location exists
 Set tbl = db.TableDefs("ENTER THE LINKED TABLE NAME HERE")
 filePath = DLookup("ENTER YOUR LOOKUP TABLE FIELD NAME HERE", "ENTER YOUR LOOKUP TABLE NAME HERE") & "\ENTER YOUR EXCEL SPREADSHEET NAME HERE.XLSX"
     tbl.Connect = "Excel 12.0 Xml;HDR=YES;IMEX=2;ACCDB=YES;DATABASE=" & filePath
     tbl.RefreshLink
 On Error GoTo 0

希望其他人发现它和我一样有用!

相关问题