从MS Excel的MS Access文件之间的链接表

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


Database1在file1中

Database2在file2中

Excel中的VBA代码在file3中

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


细节:

我有一个复杂的脚本,创build一个大型的表格,并基于MS Exceldevise连接映射,因为它更方便用户deviseMS Excel表格。 一切工作到目前为止,但我需要最后一步,LINK原始表。

在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参考库

 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 

像这样的东西应该为你做。 修改以适应您的需求…

 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