MS Access自动链接Excel电子表格

时间:2010-09-21 17:01:18

标签: excel ms-access vba excel-vba access-vba

我有一个目录结构,我正在管理系统的要求,该系统的每个组件都有自己的目录。每个组件的要求都存储在具有多个工作表的excel工作簿中(工作表的数量是静态的)。我目前正在使用访问作为中心位置来查看这些表中的信息并对它们执行查询。我不想每次将新的组件文档添加到目录时手动链接新的excel文件。有没有一种方法,当我每次开始访问时,它将搜索存储的Excel文件的目录树,并自动链接它们以便访问,如果它们没有链接并更新我的保存查询以包含新文件。我想我可以将子目录名保存在一个表中,并将那些子目录中的所有文件名保存在另一个引用另一个表的表中,因此它搜索文件系统时会将名称与表进行比较。这有可能,如果有的话,有人会指出我正确的方向。

1 个答案:

答案 0 :(得分:2)

您可以递归使用Dir或FileSystemObject从目录树中获取文件。 Access将文件的链接信息存储在TableDef的connect属性中,或者您可以从以下位置获取它:

SELECT msysobjects.Database
FROM msysobjects
WHERE (((msysobjects.Database) Is Not Null));

你可以得到这样的工作表:

   ''Requires reference to the Microsoft Excel x.x Object Library

   Dim strFileName As String
   Dim objXL As New Excel.Application 
   Dim wkb As Excel.Workbook
   Dim wks As Object

   ''objXL.Visible = True

   strFileName = "C:\Docs\LTD.xls"
   Set wkb = objXL.Workbooks.Open(strFileName)

   For Each wks In wkb.Worksheets
      DoCmd.TransferSpreadsheet acLink, acSpreadsheetTypeExcel9, _
            wks.Name, strFileName, True, wks.Name & "$"
   Next

   ''Tidy up
   wkb.Close
   Set wkb = Nothing
   objXL.Quit
   Set objXL = Nothing

或使用ADOX.Catalogue:http://forum.lessthandot.com/viewtopic.php?f=95&t=3712