ワークブックを閉じるときは Close メソッドを使用します。変更があった場合に変更内容を保存するかどうかや、変更後のファイル名は引数で指定することができます。
Closeメソッドの使用方法
引数名 | 省略 | データ型定数 | 説明 |
---|---|---|---|
SaveChanges | ○ | True / False | True を指定すると、変更がブックに保存されます。 ブックにファイル名が付けられていない場合は、FileName がファイル名として使用されます。 Filename を省略すると、ファイル名を指定するダイアログ ボックスがユーザーに表示されます。 |
Filename | ○ | バリアント型(Variant) | 変更後のブックのファイル名を指定します。 |
RouteWorkbook | ○ | True / False | ブックを次の受信者に回覧する必要がない場合、この引数は無視されます。 ブックを次の受信者に回覧する必要がある場合に True を指定すると、次の受信者にブックが送信されます。 False を指定すると、ブックは送信されません。 この引数を省略すると、ブックを送信するかどうかを確認するダイアログ ボックスがユーザーに表示されます。 |
Closeメソッドの使用例
ワークブックを保存せずに閉じる
ワークブック”test.xlsx”を保存せずに閉じる例です。
Sub sample_eb087_01()
With Workbooks("test.xlsx")
'シートに変更を加える
.Worksheets(1).Range("A1").Value = "test1"
'保存せずに閉じます。
.Close False
End With
End Sub
ワークブックを保存して閉じる
ワークブック”test.xlsx”を保存してから閉じる例です。
Sub sample_eb087_02()
With Workbooks("test.xlsx")
'シートに変更を加える
.Worksheets(1).Range("A1").Value = "test2"
'開いたときと同じファイル名で保存して閉じます。
.Close True
End With
End Sub
ワークブックを別名で保存して閉じる
ワークブック”test.xlsx”を別名”test_BACKUP.xlsx”で保存してから閉じる例です。
ファイル名に何かしら文字列を追加するということはよくあるケースですので、汎用的に使えるように文字列操作関数(InStrRevなど)を使用して処理しています。
Sub sample_eb087_03()
Dim pos As Integer
Dim NewFilename As String
With Workbooks("test.xlsx")
.Worksheets(1).Range("A1").Value = "test3"
'ファイルパスの後ろからファイル拡張子の"."を探します。
pos = InStrRev(.Name, ".")
'ワークブック名に"_BACKUP"を付与します。
NewFilename = .Path & "\" & Left(.Name, pos - 1) & _
"_BACKUP" & Mid(.Name, pos)
'別名で保存して閉じます。
.Close SaveChanges:=True, _
Filename:=NewFilename
End With
End Sub