Excel 从文件夹中获取文件名从第二个文件开始,而不是从第一个文件开始
这是我的vba脚本:Excel 从文件夹中获取文件名从第二个文件开始,而不是从第一个文件开始,excel,vba,get,filenames,Excel,Vba,Get,Filenames,这是我的vba脚本: Sub ListAllFiles() With Application.FileDialog(msoFileDialogFolderPicker) .AllowMultiSelect = False If .Show = -1 Then selectDirectory = .SelectedItems(1) dFileList = Dir(selectDirectory & Application.PathSepara
Sub ListAllFiles()
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False
If .Show = -1 Then
selectDirectory = .SelectedItems(1)
dFileList = Dir(selectDirectory & Application.PathSeparator & "*")
Do Until dFileList = ""
On Error Resume Next
Cells(nextRow, 1) = dFileList
nextRow = nextRow + 1
dFileList = Dir
Loop
End If
End With
End Sub
我现在不明白为什么文件夹包含20个文件。
脚本开始从第2个文件获取文件名,直到到达最后一个文件,并且始终跳过第一个文件
我尝试从以下位置切换: nextRow = nextRow + 1
dFileList = Dir
致: dFileList = Dir
nextRow = nextRow + 1
但这没有任何改变。
同时尝试从SelectedItem(1)更改为SelectedItem(0),但我收到错误。
接下来,我尝试将单元格(nextRow,1)=dFileList更改为单元格(nextRow,0)=dFileList
提前谢谢
编辑:我是在之前添加的,直到nextRow = Cells(Rows.Count, 1).End(xlUp).Row + 0
但是,如果我想再次获取所有文件而不删除列A中的现有文件名,则会覆盖最后一个单元格。解决方案如下您的问题看起来是下一个代码行:
On Error Resume Next
在代码的上下文中,它是无用的
它只不会让您第一次看到,单元格(nextRow,1)=dFileList
返回错误,因为nextRow=0
。
当nextRow
已经为1时,您的迭代仅对第二个文件继续,返回正确的范围
为了检查这一点,请尝试在错误恢复下一步时插入之前的Debug.Print dFileList
。您还将在即时窗口中看到第一个文件名(位于VBE-Ctrl+G
)
尝试使用nextRow=Cells(Rows.Count,1)。End(xlUp)。Row+1
您的方式(nextRow=Cells(Rows.Count,1).End(xlUp).Row+0
)使代码返回所有文件名,但它覆盖了A:A列上的最后一个现有值…您的问题似乎是下一个代码行:
On Error Resume Next
在代码的上下文中,它是无用的
它只不会让您第一次看到,单元格(nextRow,1)=dFileList
返回错误,因为nextRow=0
。
当nextRow
已经为1时,您的迭代仅对第二个文件继续,返回正确的范围
为了检查这一点,请尝试在错误恢复下一步时插入之前的Debug.Print dFileList
。您还将在即时窗口中看到第一个文件名(位于VBE-Ctrl+G
)
尝试使用nextRow=Cells(Rows.Count,1)。End(xlUp)。Row+1
您的方式(nextRow=Cells(Rows.Count,1).End(xlUp).Row+0
)使代码返回所有文件名,但它会覆盖A:A列上的最后一个现有值