メモ
業務でブックの操作を行うVBAを書く事があるが、良く忘れるのでメモに残しておく。
ブックを開く
WorkBooksコレクションのOpenメソッド
で開けます。
シンプルにフォルダパスを指定して、ブックを開く場合は下記のように指定しています。
Sub Book_Open()
Workbooks.Open("C:\Open_Target.xlsx")
End Sub
同じ配下にあるブックを開きたい場合は、ThisWorkbook.Path
を使用しています。
Sub Book_Open()
Workbooks.Open (ThisWorkbook.Path & "\Open_Target.xlsx")
End Sub
上記のコードで開いたブックが、アクティブなブックになります。開いたブックで処理を行いたい場合は、このまま処理を進めて良いと思います。
違うブックで処理をしたい場合は、WorkBooksコレクションのActivateメソッド
でアクティブ化したいブックを指定します。
Sub Book_Activate()
Workbooks.Open(ThisWorkbook.Path & "\Open_Target.xlsx")
Workbooks("aaaaa.xlsx").Activate
End Sub
基本的には、ブックの操作はオブジェクト変数に格納して行う事が自分は多いです。
その方がコードの管理が個人的に楽です。
Sub Book_Activate()
Dim wb1, wb2 As Workbook
Set wb1 = ActiveWorkbook
Set wb2 = Workbooks.Open(ThisWorkbook.Path & "\Open_Target.xlsx")
Debug.Print wb1.Name
Debug.Print wb2.Name
End Sub
ブックを閉じる
WorkBooksコレクションのCloseメソッド
で閉じる事が出来ます。
Sub Book_Close()
Dim wb As Workbook
Set wb = Workbooks("Close_Target.xlsx")
wb.Close
End Sub
ブックに変更がある場合は、下記のようなポップアップが出てきます。
ポップアップを出したくない場合は、SaveChangesオプションを使用しています。
Falseを指定した場合は、保存せずに閉じる。Trueを指定した場合は、保存して閉じます。
※Application.DisplayAlerts = False を記載して、画面の更新を止める事で対応する事も可能です。(ブックは保存されないです。)
Sub Book_Close()
Dim wb As Workbook
Set wb = Workbooks("Close_Target.xlsx")
wb.Close SaveChanges:=False
End Sub
ブックを保存
WorkBooksコレクションのSaveメソッド
で閉じる事が出来ます。
Sub Book_Save()
Dim wb As Workbook
Set wb = Workbooks("Save_Target.xlsx")
wb.Save
End Sub
名前を付けて保存する場合は、WorkBooksコレクションのSaveAsメソッド
を使用します。
Sub Book_Save()
Dim wb As Workbook
Set wb = Workbooks("Save_Target.xlsx")
wb.SaveAs (Format(Date, "yyyymmdd") & "_" & wb.Name)
End Sub