从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