我需要找到一种删除所有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条件之内时工作正常。
非常感谢您提供的任何建议。
祝你好运, Maritn
答案 0 :(得分:1)
如果您只想关闭所有工作簿但活动工具簿,可以使用我粘贴的代码:
$trend_words = json_decode($file, true);
$aggregations = $trend_words['aggregations'];
$buckets =$aggregations[2]['buckets'][0];
如果您希望关闭除了内置此宏的工作簿之外的所有工作簿,请将ActiveWorkbook替换为ThisWorkbook。其他的是删除所有文件。这显然是冒险操作,因此我建议将其限制在特定文件夹中。碰巧我有一个这样的子程序,见:
Dim wb As Workbook
For Each wb In Application.Workbooks
If wb.Name <> ActiveWorkbook.Name Then
wb.Save
wb.Close
End If
Next wb
要清理的文件夹的路径是特定的单元格,您可以根据需要将其放在其他位置。它不会删除打开的工作簿,如果你想避免错误消息,只需使用On Error Resume Next。 所以,我的建议是先关闭所有工作簿,然后删除关闭。