下面是用于打开文件并将所需数据粘贴到这些文件中,然后在完成工作后关闭这些文件的代码。当我运行此代码时,打开和
都没有文件运行时错误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
答案 0 :(得分:0)
在使用0.2
之后,应使用.GetFolder()
方法,从.show
获取值以确保确实选择了一个文件夹(这将返回.show
),然后继续使用-1
中的字符串来传递文件夹路径。
类似的事情应该起作用:
.selectitems()