使用 VBA 将文件夹导入 Excel (FileDialogFolderPicker)

Posted

技术标签:

【中文标题】使用 VBA 将文件夹导入 Excel (FileDialogFolderPicker)【英文标题】:Importing folder to Excel (FileDialogFolderPicker) using VBA 【发布时间】:2013-08-08 21:32:50 【问题描述】:

我正在使用下一个代码从某个路径中选择一个文件夹并导入其中的所有文件:

Function GetFolder()
  Dim fd As FileDialog
  Set fd = Application.FileDialog(msoFileDialogFolderPicker)
  fd.Title = "Select Excel Workbook(s) Folder"
  Dim vrtSelectedItem As Variant

  With fd
    If .Show = -1 Then
      For Each vrtSelectedItem In .SelectedItems
        GetFolder = vrtSelectedItem
      Next vrtSelectedItem
    Else
    End If

  End With
  Set fd = Nothing


End Function

当文件夹选择器窗口打开时,它会在桌面上启动。有没有办法让它在打开时进入特定路径?还是打开excel文件本身所在的位置?

【问题讨论】:

【参考方案1】:

您将更新 InitialFileName 属性,并将其设置为使用 ActiveWorkbook.Path 您需要确保包含结束斜杠,否则它将仅显示上一个文件夹而不是您想要的文件夹。 此外,没有理由遍历 .SelectedItems 集合,因为 FolderPicker FileDialog 不支持多选。

总之,我认为这是您要查找的代码:

Function GetFolder()

    With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = ActiveWorkbook.Path & Application.PathSeparator
        .Title = "Select Excel Workbook(s) Folder"
        If .Show = True Then
            GetFolder = .SelectedItems(1)
        Else
            GetFolder = False
        End If
    End With

End Function

【讨论】:

【参考方案2】:

.Show之前添加这样一行:

 fd.InitialFileName = "c:\whateverInitialDirectory"

【讨论】:

以上是关于使用 VBA 将文件夹导入 Excel (FileDialogFolderPicker)的主要内容,如果未能解决你的问题,请参考以下文章

如何用VBA将EXCEL中的若干的数据导入不同的word文档

将 Excel 文件导入 Access VBA 时更改数据类型

Excel 工作表名称不允许使用 VBA 将数据导入 Access - DAO

将数据从 Excel 文件导入 MSAccess 格式化 VBA 中的每一列

访问 - VBA - 无法导入新的 excel 文件 - 但打开一次后可以

如何使用sql语句和vba将数据从MS-Access导入excel power查询?