【ExcelVBA】ブックの操作(開く、閉じる、ワイルドカード)
ブックを開く
基本
Cドライブ内「data」フォルダ内のWb1を開く場合
Workbooks.Open Filename:= "C:\data\Wb1.xlsx"
Workbooks.Open ("C:\data\Wb1.xlsx")
変数を使う
Dim path, book path ="C:\data\" book = "Wb1.xlsx" Workbooks.Open (path & book)
セルの入力を使う → A1 = C:\data\
path = Range("A1").value
開く場合のオプション追加
①読み取り専用で開く
Workbooks.Open Filename:= "C:\data\Wb1.xlsx", ReadOnly:=True
②パスワード付きのファイルを開く(パスワード=1234)
Workbooks.Open Filename:= "C:\data\Wb1.xlsx", Password="1234"
ブックを閉じる
基本
保存して閉じる
Workbooks("Wb1.xlsx").Close savechanges:=True
保存しない
Workbooks("Wb1.xlsx").Close savechanges:=False
ワイルドカードを使ったブックの開閉
「*」を使用する(文字数を問わない)
Dim path, book path ="C:\data\" book = Dir(path & "book*.xlsx") Workbooks.Open (path & book)
「book2021」や「book20210101」など複数該当する場合、
昇順で一番初めのファイルのみが開かれる
「?」を使用する(同じ文字数のもののみ)
Dim path, book path ="C:\data\" book = Dir(path & "book????????.xlsx") Workbooks.Open (path & book)
上記例だと、?は8つなので、8桁のみが該当する。
ワイルドカードで開いたものを閉じる
パターン1:ワイルドカードで閉じる
Dim path, book Dim Wb As Workbook path ="C:\data\" book = Dir(path & "book????????.xlsx") Workbooks.Open (path & book) For i = 1 To Workbooks.Count if Workbooks(i).Name Like "book????????.xlsx" Then Workbooks(i).Close End If Next i
パターン2:開いたときに変数登録しておく
Dim path, book Dim Wb As Workbook path ="C:\data\" book = Dir(path & "book????????.xlsx") Workbooks.Open (path & book) Set Wb = ActiveWorkbook Wb.Close