【问题标题】:Why will be the last file the first one in vba for each?为什么最后一个文件是 vba 中的第一个文件?
【发布时间】:2021-08-20 20:59:09
【问题描述】:

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

结果如下:

这里是代码:

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”中寻找问题,但总是得到这个。你能帮帮我吗?

【问题讨论】:

  • For Each 在哪里保证特定的迭代顺序? (它没有) - 如果你想要一个排序的输出,你需要对输出进行排序。
  • 谢谢,但为什么循环将最后一个文件(名称)移动到第一位?漏洞?我不认为。
  • “文件夹中的最后一个文件”不是问题,文件按字母顺序显示在文件资源管理器中如果您按这种方式排序。还是“最后一个文件”是最新的?如果您需要特定的特定顺序,则需要以这种方式对它们进行排序。

标签: excel vba file foreach fso


【解决方案1】:

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

【讨论】:

  • 谢谢,但为什么循环将最后一个文件(名称)移动到第一位?漏洞?我不认为。
猜你喜欢
  • 1970-01-01
  • 2021-03-06
  • 2013-06-04
  • 2021-10-16
  • 2015-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多