您需要wsOutp在检查之前是否重置.如上所述,您将设置wsOutp为在初始循环中引用工作表.然后,您必须在下一个循环之前将其重置为空,因为当您尝试将其设置为引用可能不存在的另一个工作表时,如果失败,则引用仍指向原始工作表.那么最终会发生什么,是你在下一步删除工作表.
所以实际上你的代码不会覆盖到同一张纸上,但是你要删除你创建的每张纸,所以最后你只剩下一张纸.
添加以下行:
' Delete sheet with filename if exists
Set wsOutp = Nothing
On Error Resume Next
Set wsOutp = Sheets(strFile)
On Error GoTo 0
If Not wsOutp Is Nothing Then
wsOutp.Delete
End If
Run Code Online (Sandbox Code Playgroud)