【问题标题】:Link Table between MS Access files from MS ExcelMS Excel 中的 MS Access 文件之间的链接表
【发布时间】:2017-07-22 23:01:08
【问题描述】:

如何在 MS Access *.accdb 文件中创建表链接,链接到 MS Access *.accdb 文件中的另一个表,但从 MS Excel *.xlsx 文件中的 VBA 代码。


文件 1 中的数据库 1

文件2中的数据库2

文件3中的Excel VBA代码

执行 file3 中的代码,将 file2 的表链接到 file1,使其在 file1 中显示为链接表。


详情:

我有一个复杂的脚本来创建一个基于 MS Excel 设计的大表和连接映射,因为在 MS Excel 表中设计内容更加用户友好。到目前为止一切都很好,但我需要最后一步,链接原始表。

在 MS Access 中我会这样做

DoCmd.TransferDatabase TransferType:=acLink, _
    DatabaseType:="Microsoft Access", _
    DatabaseName:=SRC_FILE_PATH, _
    ObjectType:=acTable, _
    Source:=SRC_TABLE_NAME, _
    Destination:=DESTINATION_TABLE_NAME

但由于我在 Excel 中执行 VBA 代码,仅使用通过 DAO.Database 对象连接到数据库,因此此命令不起作用。

【问题讨论】:

  • 做同样的事情,从 Excel 中的 DAO 库创建一个 tabledef 对象,然后设置 .connect.SourceTableName 等。
  • 完美运行,谢谢!

标签: excel vba ms-access


【解决方案1】:

在 Excel 中使用 DAO 参考库

Dim wrkDAOWorkspace As DAO.Workspace
Dim dbsDAODatabase As DAO.Database
Dim tdfNewLinkedTable As DAO.TableDef

    Set wrkDAOWorkspace = CreateWorkspace("WorkspaceForLinkCreation", "Admin", "", dbUseJet)
    Set dbsDAODatabase = wrkDAOWorkspace.OpenDatabase("c:\file1.accdb")

    Set tdfNewLinkedTable = New DAO.TableDef
    With tdfNewLinkedTable
        .Name = "TestTableLinked"
        .Connect = ";DATABASE=c:\file2.accdb"
        .SourceTableName = "TestTableLinkTo"
    End With

    dbsDAODatabase.TableDefs.Append tdfNewLinkedTable

【讨论】:

    【解决方案2】:

    这样的事情应该为你做。修改以满足您的需求...

    Private Sub Command1_Click()
    DoCmd.SetWarnings False
    
    Dim InputFile As String
    Dim InputPath As String
    
    InputPath = "C:\your_path_here\"
    InputFile = Dir(InputPath & "*.xls")
    
    Do While InputFile <> ""
            DoCmd.TransferSpreadsheet acImport, , InputFile, InputPath & InputFile, True '< The true is for column headers
            InputFile = Dir
    Loop
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      相关资源
      最近更新 更多