今回は、今開いているブックを除いて、他のブックすべて閉じる方法について、
考えてみたいと思います。
ポイント
- 開いているワークブックをカウントし、名前を取得する関数を作成する。
関数の作成
この関数は、今現在開いているワークブックのファイル名を配列で返します。
Function GetOpenBN() ReDim MyArray(0) As Variant Dim n As Integer For i = 1 To Workbooks.Count n = UBound(MyArray) ReDim Preserve MyArray(n + 1) 'ファイル名を配列に格納する。 MyArray(i - 1) = Workbooks(i).Name Next i GetBookName = MyArray End Function
呼び出して使ってみよう。
- 関数の戻り値は配列なので、取り出し方に注意しよう。
- 「On Error Resume Next」が入っていることに注意。
※ブックを閉じるときに、上書きをしないように「SaveChanges:=False」を指定しています。
Sub OtherWorkbookClose() For j = 0 To UBound(GetOpenBN) - 1 On Error Resume Next If Not InStr(GetOpenBN()(j + 1), ThisWorkbook.Name) > 0 Then Workbooks(GetOpenBN()(j + 1)).Close SaveChanges:=False End If Next j