Excel 从文件夹中获取文件名从第二个文件开始,而不是从第一个文件开始

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

这是我的vba脚本:

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列上的最后一个现有值