For Each…Nextで繰り返し処理する
複数のエクセルファイルにデータの書き込みなどをした後、まとめて上書き保存・閉じる場合は、For Each…Nextですべてのエクセルファイルを1つずつ処理していきます。
コード
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19  | 
						'処理対象のエクセルファイル Dim targetExcelFile As Workbook '開いているエクセルファイルを、繰り返し処理で1つずつ処理する For Each targetExcelFile In Workbooks     '処理対象のエクセルファイル名と、VBAのファイル名を比較し、違う時のみ処理を行う     If targetExcelFile.Name <> ThisWorkbook.Name Then         'ファイルを上書き保存         targetExcelFile.Save         'ファイルを閉じる         targetExcelFile.Close     End If Next  | 
					
解説
VBAが記述されているエクセルファイル自体が途中で閉じられると、そこで処理が終了してしまいます。
そのため、VBAが記述されているエクセル以外を、「上書き保存」→「閉じる」と1つずつ繰り返し処理しています。
POINT
VBAのエクセルファイル名は、ThisWorkbook.Nameで調べることができます。
VBAのあるエクセルファイルも閉じる
ループ処理が終わった後(Nextの後)に、VBAのファイルを閉じるプログラムを書きます。
| 
					 1 2 3 4  | 
						'VBAのファイルは最後に閉じる ThisWorkbook.Close  | 
					
ただし、この書き方だとエクセルのアプリケーションが残ってしまうので、実際は次の「エクセル自体を終了する」が実用的です。
エクセル自体を終了する
ループ処理が終わった後(Nextの後)に、Excel自体を終了するプログラムを書きます。
| 
					 1 2 3 4  | 
						'Excel自体を終了する Application.Quit  | 
					
VBAのエクセルファイルも保存する必要がある場合は、Application.Quitの直前にThisWorkbook.Saveを書きます。
注意すること
すべてのエクセルファイルを閉じる場合、VBAが書かれているエクセルファイルは最後に閉じましょう。
 
