将文件夹中的所有文件(所有excel文件)导入到访问数据库中的单个表中

时间:2011-08-23 03:24:02

标签: vb.net ms-access import access-vba ms-access-2003

我正在尝试使用A:H列导入一堆excel 2003文件,并且它们在相同的标题等下进入Access 2003数据库中的表。这是一个访问即时制作的模块。我使用文件搜索来查找以Format开头的每个文件(他们都这样做)来获取文件夹路径中的所有文件。有没有更有效的方法来做到这一点?以某种方式选择文件夹中的所有文件?并将每个导入到访问中的同一个表? 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 个答案:

答案 0 :(得分:2)

您可以使用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