VBA – 删除所有的工作簿,但活动,然后closures(不保存)活动的

我需要find一种方法来删除所有的Excel工作簿,但一些条件满足后的活动。 我是VBA的新手,所以有可能我在这里遇到一些非常基本的问题(但是在这里我找不到类似的问题)。 这是我的代码:

Sub kill() Dim wb As Workbook Dim A As String A = 2 If A = 1 Then MsgBox "Everything is fine" 'The if condition is working just fine Else Application.DisplayAlerts = False For Each wb In Application.Workbooks If Not (wb Is Application.ActiveWorkbook) Then Application.DisplayAlerts = False If wb.Path <> vbNullString Then wb.ChangeFileAccess vbNormal kill (wb.FullName) End If ThisWorkbook.Close SaveChanges:=False End If Next End If End Sub 

if条件运行良好,但是VBA似乎对kill命令有困难,这让我感到困惑,因为“kill”部分在没有放入If Not条件的情况下工作正常。

非常感谢您提供的任何build议。

最好的问候,Maritn

如果你只想closures所有的工作簿,但是可以使用下面的代码:

 Dim wb As Workbook For Each wb In Application.Workbooks If wb.Name <> ActiveWorkbook.Name Then wb.Save wb.Close End If Next wb 

如果您希望closures所有工作簿(除了具有此macros的工作簿),请将ActiveWorkbookreplace为ThisWorkbook。 其他的事情是删除所有文件。 这显然是危险的操作,所以我build议将其限制到特定的文件夹。 碰巧我有一个这样的子程序,请看:

 Sub DeleteFilesFromFolder() Dim myPath myFolder = Sheets("Main").Range("B4").Value Set Fso = CreateObject("Scripting.FileSystemObject") For Each Filename In fldr.Files Filename.Delete True ' delete all files Next End Sub 

要清理的文件夹的path是特定的单元格,您可以将它放在别处,如您所愿。 它不会删除打开的工作簿,如果你想避免错误信息,只需使用错误恢复下一步。 所以,我的build议是先closures所有的工作簿,然后删除closures。