MS Access Auto Link Excel Электронные таблицы - PullRequest
0 голосов
/ 21 сентября 2010

У меня есть структура каталогов, в которой я управляю требованиями системы, причем каждый компонент этой системы имеет свой собственный каталог. требования каждого компонента хранятся в книге Excel, которая имеет несколько листов (число листов является статическим). В настоящее время я использую доступ в качестве центрального местоположения для просмотра информации на этих листах и ​​выполнения запросов к ним. Я ненавижу вручную связывать новые файлы Excel каждый раз, когда в каталог добавляется новая документация по компонентам. Есть ли способ, когда каждый раз, когда я начинаю доступ, он будет искать дерево каталогов хранимых файлов Excel и автоматически связывать их с доступом, если они не связаны, и обновлять мои запросы сохранения, чтобы включить новые файлы. Я думал, что могу сохранить имена подкаталогов в таблице и все имена файлов в этих подкаталогах в другой таблице, которая ссылается на другую таблицу, поэтому при поиске в файловой системе сравнивает имена с таблицей. Возможно ли это, если так может кто-то направить меня в правильном направлении.

1 Ответ

2 голосов
/ 21 сентября 2010

Вы можете использовать Dir или FileSystemObject рекурсивно для получения файлов из дерева каталогов. Access хранит информацию о связи файлов в свойстве connect TableDef или вы можете получить его по адресу:

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. Каталог: http://forum.lessthandot.com/viewtopic.php?f=95&t=3712

...