Excel VBAでワークブックを開く(Openメソッド)、閉じる(Closeメソッド)の使い方を紹介します。
- Openメソッドでワークブックを開く
- Closeメソッドでブックを閉じる
- サンプルコード:ワークブックを開いて、閉じる
- サンプルコード:ファイルの存在確認後、ファイルが存在すればファイルを開く
- サンプルコード:ファイルが存在し、かつ、現在そのファイルを開いていない場合にファイルを開く。そして閉じる。
- サンプルコード:ダイアログボックスでファイルを選び、ファイルを開く。そして閉じる。
Openメソッドでワークブックを開く
VBAでワークブックを開くには、WorkbooksコレクションのOpenメソッドを使います。
※Workbookオブジェクトの集合体がWorkbooksコレクション。
Openメソッドの構文は以下の通りです。
■構文
Workbooks.Open FileName
引数のFileNameは文字列型(String)で、開くワークブックのフルパスを指定します。FileNameは省略不可です。
※Openメソッドの引数は他にもありますが、本記事では一旦FileNameのみ案内します。
■サンプルコード
Workbooks.Open "C:\test.xlsx"
Closeメソッドでブックを閉じる
VBAでワークブックを閉じるには、WorkbooksコレクションのCloseメソッドを使います。
Closeメソッドの構文は以下の通りです。
■構文
Workbooks(Filename).Close
引数のFileNameはバリアント型(Variant)で、閉じるワークブックのファイル名を指定します。省略可能です。
※Closeメソッドの引数は他にもありますが、本記事では一旦FileNameのみ案内します。
■サンプルコード
Workbooks("test.xlsx").Close
※OpenメソッドのFileNameには、ファイルのフルパスを指定し、CloseメソッドのFileNameにはファイル名を指定します。
Openメソッドはどのファイルを開くかをフルパスで指定するのに対して、Closeメソッドはすでに開いているファイルを閉じるのでファイル名のみ指定します。
サンプルコード:ワークブックを開いて、閉じる
Sub sampleA_1()
Workbooks.Open "C:\test.xlsx"
MsgBox "ファイルを開きました。これからファイルを閉じます"
Workbooks("test.xlsx").Close
End Sub
サンプルコード:ファイルの存在確認後、ファイルが存在すればファイルを開く
Sub sampleA_2()
If Dir("C:\test.xlsx") <> "" Then
Workbooks.Open "C:\test.xlsx"
Else
MsgBox "ファイルが存在しません"
Exit Sub
End If
MsgBox "ファイルを開きました。これからファイルを閉じます"
Workbooks("test.xlsx").Close
End Sub
■Dir関数
Dir関数は引数に指定したファイルが存在する場合はファイル名を返し、ファイルが存在しない場合は""(空欄)を返します。
サンプルコード:ファイルが存在し、かつ、現在そのファイルを開いていない場合にファイルを開く。そして閉じる。
Sub sampleA_3()
Dim strFile As String, wb As Workbook
Dim strTarget As String: strTarget = "C:\test.xlsx"
strFile = Dir(strTarget)
'ファイルがないない場合は、メッセージを表示し、処理を終了
If strFile = "" Then
MsgBox "ファイルが存在しません"
Exit Sub
End If
'ファイルがすでに開いている場合は、メッセージを表示、処理を終了
For Each wb In Workbooks
If wb.Name = strFile Then
MsgBox strFile & "はすでに開いています", vbExclamation
Exit Sub
End If
Next wb
Workbooks.Open strTarget
MsgBox "ファイルを開きました。これからファイルを閉じます"
Workbooks(strFile).Close
End Sub
■説明
Workbooksコレクションは現在開いているワークブックオブジェクトの集合です。For Each文でWorkbooksコレクションに該当ファイルがある場合は、既に開いているMsgBoxを表示し、処理を中止します。
For Each オブジェクト変数 In オブジェクト
~繰り返し処理を記述~
Next オブジェクト変数
サンプルコード:ダイアログボックスでファイルを選び、ファイルを開く。そして閉じる。
Sub sampleA_4()
Dim strFile As String
strFile = Application.GetOpenFilename("Microsoft Excelブック,*.xls?")
If strFile <> "false" Then
Workbooks.Open strFile
MsgBox "ファイルを開きました。これからファイルを閉じます"
Workbooks(Dir(strFile)).Close
End If
End Sub
■説明
ApplicationオブジェクトのGetOpenFilenameメソッドでは、「ファイルを開く」ダイアログボックスで、ユーザが選択したファイルのフルパスを返します。
※GetOpenFilenameメソッドではファイルは開きません。
GetOpenFilenameメソッドで取得したファイルのフルパスを利用して、Openメソッドを使ってファイルを開きます。
Closeメソッドでは、フルパスからDir関数を用いてファイル名だけを取得し、ファイルを閉じています。