0

我希望使用 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 电子表格)。

4

1 回答 1

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

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

于 2019-01-11T20:43:35.173 回答