2017-11-06 17 views
0

いくつかの条件が満たされた後、すべてのExcelブックを削除する方法を見つける必要があります。私はVBAの初心者ですので、ここでは非常に基本的な問題があるかもしれません(しかし、私はここで同様の質問を見つけることはできませんでした)。ここに私のコードは次のとおりです。そうでない場合の内側に入れない時にザ・条件がうまく機能しているが、VBAは「殺害」の部分以来、私を混乱させるkillコマンド、との難しさを持っていると思われる場合は完璧に働いている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 

調子。

ご提供いただいたご提案いただきありがとうございます。

敬具、 Maritn

+0

ファイルを削除するには、Killコマンドを使用します。 'wb.Close SaveChanges:= False' –

+1

あなたがパラメータを持つサブルーチン(' kill(wb.FullName) ')を呼び出すようにVBAに指示することで、あなたは確かに混乱します。あなたのサブルーチンがパラメータを必要とすることを指定しました( 'Sub kill()')。 (自分の変数やプロシージャーの名前としてVBA関数/キーワードを使用しないでください。) – YowE3K

+0

開いているファイルに対してkillは機能しません。削除する前にブックを閉じる必要があります。 – h2so4

答えて

1

あなただけの、あなたは私が下に貼り付けるコード使用できるすべてのブックが、アクティブなものをクローズする場合:あなたはむしろ必要な場合を除き、すべてのブックを閉じるには

Dim wb As Workbook 

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

をActiveWorkbookをThisWorkbookに置き換えてください。他の方法は、すべてのファイルを削除することです。これは明らかに危険な操作なので、特定のフォルダに制限することをお勧めします。見、私はこの種の一つのサブルーチンを持っていることが起こった:あなたが望むよう

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 

きれいにするフォルダのパスは、あなたが他の場所に置くことができ、特定のセルです。開いているブックは削除されません。エラーメッセージを回避したい場合は、On Error Resume Nextを使用してください。 私の提案は、まずすべてのワークブックを閉じてから、削除を閉じることです。

関連する問題