循环一直在工作,直到我添加了 If/ElseIf 语句来区分以“N”或“V”开头的两个不同文件。一切似乎都很好,但在它最初循环之后,它会直接通过 If 语句跳到否则。我在本地窗口中观看,它正在正确分配下一个文件,但是脚本将其视为开始时没有“V”,而实际上确实如此。建议?谢谢!
这是有问题的部分:
folderPath = myDir
If Right(folderPath, 1) <> "\" Then folderPath = folderPath + "\"
filename = Dir(folderPath & "*.xls")
Do While filename <> ""
Application.ScreenUpdating = False
Set wbkCS = Workbooks.Open(folderPath & filename)
If filename = Dir(folderPath & "V*" & "*.xls") Then
wbkCS.Worksheets("Cut Sheet").Range("S4:S2000").Copy
With wbkVer.Worksheets("Cutsheets")
.Range("A" & .Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
End With
ElseIf filename = Dir(folderPath & "N*" & "*.xls") Then
wbkCS.Worksheets("PON Cut Sheet").Range("AV3:AV2000").Copy
With wbkVer.Worksheets("Cutsheets")
.Range("A" & .Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteValues
End With
End If
filename = Dir
Loop
Application.ScreenUpdating = True
最佳答案
正如 Remy Porter 所指出的,您对 Dir 函数的重复使用会在每次使用时抓取困惑的条目。If filename = Dir(folderPath & "V*" & "*.xls") Then
此行将再次获取 V**.xls
的第一个匹配项。从那条路上。这肯定不是你想要的。
在 Excel VBA 中,您可以使用 like
作为最简单的解决方案:If filename like "N*.xls" Then
(而且你不应该使用那些双 **
)
关于excel - Do While,循环在初始循环后找不到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14103515/