импортировать все файлы в папке (все файлы Excel) в одну таблицу в базе данных доступа - PullRequest
1 голос
/ 23 августа 2011

Я пытаюсь импортировать несколько файлов Excel 2003 со столбцами A: H, которые находятся под одинаковыми заголовками и т. Д., В таблицу базы данных Access 2003. Это модуль в доступе, который я делаю. Я использую поиск файлов для поиска каждого файла, который начинается с формата (что они все делают), чтобы получить все файлы в пути к папке. Есть ли более эффективный способ сделать это? как-то выделить все файлы в папке? и импортировать каждый в одну и ту же таблицу в доступе? DoCmd.TransferSpreadsheet позволяет выбрать каждый путь к файлу отдельно, поэтому я не уверен, как получить имя каждого файла в папке для его импорта.

Если вы можете решить эту проблему, или если у вас есть какие-либо рекомендации относительно лучшего способа сделать это или что-нибудь, что было бы замечательно! заранее спасибо =)

У меня есть это на данный момент:

Sub Import()

Dim db As Database
Set db = CurrentDb

Dim appendtbl As Recordset
Set appendtbl = db.OpenRecordset("sampletbl", dbOpenDynaset)

 Dim FilePathString As String
Dim folderString As String

folderString = "C:blahblahblah"
Dim lngFileNumber As Long
With Application.FileSearch
    .NewSearch
    .LookIn = folderString
    .FileType = xls
    .Filename = "Format"
    If .Execute > 0 Then

    For lngFileNumber = 1 To .FoundFiles.Count

    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "sampletbl",       FilePathString, True, "A:H"

    Next lngFileNumber

    End If
    End With

    End Sub

Я немного погуглил после того, как попытался написать код, и нашел несколько более эффективных способов поиска, таких как:

strFileName = Dir("somepath\*.XLS")
Do Until strFileName = ""
'import from file "somepath\" & strFileName
strFileName = Dir()
Loop

Я попробую и посмотрю, как это будет

1 Ответ

2 голосов
/ 23 августа 2011

Вы можете сделать это, используя FileSystemObject.

Dim oFs As New FileSystemObject
Dim oFolder As Folder
Dim oFile As File
If oFs.FolderExists(FullPath) Then
    Set oFolder = oFs.GetFolder(FullPath)

    For Each oFile In oFolder.Files

    //oFile contain the file information

Для получения дополнительной информации о FSO ознакомьтесь с документами MSDN: http://msdn.microsoft.com/en-us/library/6tkce7xa%28v=VS.85%29.aspx

...