excel - FileSystemObject - 无法打开保存在文件夹中的文件
问题描述
下面是用于打开文件并将所需数据粘贴到这些文件中并在完成工作后关闭这些文件的代码。当我运行这段代码时,没有文件在打开和
运行时错误 13:类型不匹配
正在抛出这行代码
Set fldr = fso.GetFolder(Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1))
请提出错误在哪里。尽管它在其他文件中运行良好:
Sub split()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim fso As New FileSystemObject
Dim fl As File
Dim fldr As Folder
Dim akb As Workbook
Dim tkb As Workbook
Dim RawAL As Worksheet
Dim RawAL1 As Worksheet
Dim RawSR As Worksheet
Dim RawSR1 As Worksheet
Dim lrow As Integer
Dim ALSummary As Worksheet
Dim ALSummary1 As Worksheet
MsgBox "Please select the path where Access Log Report are being saved."
Application.FileDialog(msoFileDialogFolderPicker).Show
Set fldr=fso.GetFolder(Application.FileDialog(msoFileDialogFolderPicker).SelectedItems(1))
lrow = Cells(Rows.Count, 2).End(xlUp).Row
For Each fl In fldr.Files
Workbooks.Open fl
Set akb = ActiveWorkbook
Set tkb = ThisWorkbook
Dim i As Integer
Set RawAL = akb.Sheets("Raw Access Log")
Set RawAL1 = tkb.Sheets("Raw Access Log")
Set RawSR = akb.Sheets("Raw Submittal Report")
Set RawSR1 = tkb.Sheets("Raw Submittal Report")
Set ALSummary = akb.Sheets("Access Log Summary")
Set ALSummary1 = tkb.Sheets("Access Log Summary")
RawAL.Visible = xlSheetVisible
RawAL.AutoFilterMode = False
RawAL.Range("a1").CurrentRegion.ClearContents
RawAL1.Activate
RawAL1.AutoFilterMode = False
RawAL1.Range("a1").CurrentRegion.AutoFilter Field:=1, _
Criteria1:=ALSummary1.Range("b5"), Operator:=xlFilterValues
RawAL1.Range("A1:f65000").SpecialCells(xlCellTypeVisible).Copy
RawAL.Range("a1").PasteSpecial xlPasteValues
RawSR.Visible = xlSheetVisible
RawSR.AutoFilterMode = False
RawSR.Range("a1").CurrentRegion.ClearContents
RawSR1.Activate
RawSR1.AutoFilterMode = False
RawSR1.Range("a1").CurrentRegion.AutoFilter Field:=1, _
Criteria1:=ALSummary1.Range("b5"), Operator:=xlFilterValues
RawSR1.Range("A1:E500").SpecialCells(xlCellTypeVisible).Copy
RawSR.Range("a1").PasteSpecial xlPasteValues
Application.CutCopyMode = False
RawSR.Visible = xlSheetHidden
ALSummary.Activate
akb.Close True
Next fl
End Sub
解决方案
您应该.GetFolder()
在 using 之后使用该方法.show
,获取 from 的值.show
以确保确实选择了一个文件夹(这将返回-1
),然后使用字符串 from.selectitems()
继续传递文件夹路径。
像这样的东西应该工作:
with application.filedialog(msoFileDialogFolderPicker)
if .show = -1 then
set fldr = fso.getfolder(.selecteditems(1))
else
msgbox "No Folder selected"
end if
end with
推荐阅读
- angular - Error during template compile of 'AppRoutingModule' Function expressions are not supported in decorators
- javascript - 未捕获的类型错误:allClearButton.addEventListener 不是函数
- snowflake-cloud-data-platform - 雪花枢轴属性值到对象数组中的列中
- postgresql - 如何在rails中索引已经创建的数据?
- android - 连接丢失后RSocket恢复会话/流
- javascript - 在 PWA 中打开链接而不显示 url?
- javascript - Express 错误:在将标头发送到客户端后无法设置标头
- android - 有什么方法可以检测单色平面,在 Arcore 中放置物体?
- angular-ui-router - Angular 8 路由器 - 加载错误的组件
- postgresql - 执行 PostgreSQL 的 concat() 而不是 || 的方法 在 JOOQ 中?