excel - 我想要文件夹对话路径
问题描述
我希望用户选择他们选择的文件夹,用户输入对话框,我可以在其中选择路径。
Sub Getsheets()
Path = "D:\Workbooks\" 'want to add the user choice path, rest of code is fine
Filename = Dir(Path & ("*.csv"))
Do While Filename <> ""
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy after:=ThisWorkbook.Sheets(1)
Next Sheet
Workbooks(Filename).Close
Filename = Dir()
Loop
End Sub
解决方案
Application.FileDialog
使用msoFileDialogFolderPicker
选项(将其限制为选择文件夹)可以轻松实现这一点。
一个简单的例子是:
Sub Getsheets()
Dim Path As String
Path = ""
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = -1 Then
Path = .SelectedItems(1)
End If
End With
If Path <> "" Then
Filename = Dir(Path & ("\*.csv"))
Do While Filename <> ""
Workbooks.Open Filename:=Path & "\" & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy after:=ThisWorkbook.Sheets(1)
Next Sheet
Workbooks(Filename).Close
Filename = Dir()
Loop
End If
End Sub
此代码实际上会打开文件夹对话框,并且仅Path
在OK
按下 ( .Show = -1
) 时才会填充:
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = -1 Then
Path = .SelectedItems(1)
End If
End With
检查是否选择了路径Path <> ""
。
最后一个小改动,路径不包含结尾反斜杠,因此附加了以下内容:
Filename = Dir(Path & ("\*.csv"))
编辑以下 OP 评论
由于Path
不以反斜杠结尾,调用 Workbook.Open 方法的行出现错误。固定线路是:
Workbooks.Open Filename:=Path & "\" & Filename, ReadOnly:=True
推荐阅读
- java - @Transactional 是否支持 NamedParameterTemplate.batchUpdate
- sql - 使用带有公用表表达式 (CTE) 的 SQL 时出错
- python - 从 Github 存储库签出 jenkinsfile 时,jenkinsfile 可以从同一个存储库调用/启动 python 脚本吗?
- vue.js - 在渲染函数中利用转换钩子时,“之前”钩子会触发渲染吗?
- tensorflow - 这是什么意思以及如何解决它?
- amazon-web-services - ElasticSearch 大量清除已删除文件的原因?(AWS ES 服务)
- pointers - 将 uin64_t 与 -m32 和 Unity 测试框架混合使用时,GCC -Wall 显示“未使用参数”警告
- r - 预测事件何时发生
- php - PHP文件未保存到给定文件或目录
- javascript - 在 html 表单标签中使用 jquery var 值