首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从文件夹中获取文件名,从第二个文件开始,而从第一个文件开始。

从文件夹中获取文件名,从第二个文件开始,而从第一个文件开始。
EN

Stack Overflow用户
提问于 2020-09-10 02:47:55
回答 1查看 65关注 0票数 0

这是我的vba脚本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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个文件。脚本开始从第二个文件中获取文件名,直到到达最后一个文件,并且始终跳过第一个文件。

我试着从:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        nextRow = nextRow + 1
        dFileList = Dir

至:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        dFileList = Dir
        nextRow = nextRow + 1

但这不会有任何改变。也尝试从SelectedItem(1)更改为SelectedItem(0),但我收到了错误。接下来,我尝试将Cells(nextRow,1) = dFileList改为Cells(nextRow,0) = dFileList

提前感谢!

编辑:i是在Do之前添加的,直到

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
nextRow = Cells(Rows.Count, 1).End(xlUp).Row + 0

但是,如果我想再次获得所有文件而不删除列A中的现有文件名

我在覆盖最后一个单元格。

解决方案如下

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-10 03:09:44

您的问题似乎是下一个代码行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
On Error Resume Next

它在您的代码上下文中是无用的。

只有Cells(nextRow, 1) = dFileList不允许您第一次看到 返回错误,因为nextRow = 0。而您的迭代只在第二个文件中继续,当nextRow已经是1时,返回一个正确的范围..。

为了检查这一点,请尝试在Debug.Print dFileList之前插入On Error Resume Next。您还将在Immediate Window (在VBE -Ctrl + G中)中看到第一个文件名。

尝试使用nextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1

您的方法(nextRow = Cells(Rows.Count, 1).End(xlUp).Row + 0)使代码返回所有文件名,但它覆盖了A:一个列上的最后一个现有值.

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63828069

复制
相关文章

相似问题

添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文