微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么最后一个文件是 vba 中每个文件的第一个文件?

如何解决为什么最后一个文件是 vba 中每个文件的第一个文件?

我想使用 vba 宏将文件和子文件夹列出到 Excel 工作表中。列表正在运行,但最后一个文件夹的最后一个文件移动到列表中实际文件夹的第一个位置。

结果如下:

enter image description here

这是代码

If selectedFolder.Files.Count = 0 Then
            For Each origSubFolder In selectedFolder.SubFolders
                'Create backup subfolder
                copiedSubFolder = copiedFilesDir & "\" & origSubFolder.Name & affix
                fso.CreateFolder copiedSubFolder
                
                'Recording folders to Excel file
                rfSht.Range("C" & r).Value = origSubFolder
                rfSht.Range("M" & r).Value = copiedSubFolder
                r = r + 1
                
                For Each File In origSubFolder.Files
                    'Save As original files as xlsx
                    fileName = fso.GetFileName(File)
                    fileNamewoext = Left(fileName,(InStrRev(fileName,".",-1,vbTextCompare) - 1))
                        'fileNamewoext = Left(fileName,InStr(fileName,".") - 1)
                    fileNameWAffix = fileNamewoext & affix
                    Set owb = Workbooks.Open(File)
                    owb.SaveAs fileName:=copiedSubFolder & "\" & fileNameWAffix,FileFormat:=51
                    ActiveWorkbook.Close
                    
                    'Recording files to Excel file
                    rfSht.Range("D" & r).Value = File
                    rfSht.Range("N" & r).Value = copiedSubFolder & "\" & fileNameWAffix & ".xlsx"
                    r = r + 1
                Next
            Next
            MsgBox "Task completed",vbinformation
        Else

我一直在寻找 for each 循环或“r=r+1”中的问题,但总是得到这个。你能帮我吗?

解决方法

您可以做两件事 1 在 VBA 上对数组中的输出进行排序,然后打印该数组。否则你也可以在excel上对输出进行排序。我会推荐第一个。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。