【VBA】作成したブックへの自動切り替え

VBAで Workbooks.Add を使って新しいブックを作成した場合、作成直後にそのブックをアクティブに切り替えることができます。
また、複数ブックを扱う場合は、どのブックがアクティブかを明確にすることが重要です。

ここでは、新規作成したブックへの自動切り替え方法を解説します。


1. 作成したブックを変数に格納してアクティブ化

Workbooks.Add は、新規ブックを返すため、オブジェクト変数に代入することで 明示的に操作対象を指定できます。

Sub CreateAndActivateBook()
Dim wb As Workbook
Set wb = Workbooks.Add '新規ブック作成
wb.Activate '作成したブックをアクティブに
End Sub

ポイント

  • wb.Activate を呼ぶことで、新規作成したブックを最前面に表示可能。
  • 変数 wb を使うことで、他のブックとの混同を防げます。

2. 作成したブックに直接処理を続行する

作成したブックを変数で保持していれば、アクティブ化せずとも直接操作が可能です。

Sub CreateBookAndWrite()
Dim wb As Workbook
Set wb = Workbooks.Add

'直接操作(アクティブ化は不要)
wb.Sheets(1).Range("A1").Value = "新規ブックに書き込み"

'名前を付けて保存
wb.SaveAs ThisWorkbook.Path & "\AutoCreatedBook.xlsx"
End Sub

補足:
Activate は必須ではなく、変数経由で操作する方がコードが安定します。


3. 複数ブックが開いている場合の切り替え

複数のブックが開いている状況で、作成したブックをアクティブにしたい場合は、変数の .Activate を使うのが確実です。

Sub CreateAndSwitchBack()
Dim wb As Workbook
Dim originalWb As Workbook

'元のブックを記録
Set originalWb = ActiveWorkbook

'新しいブックを作成して切り替え
Set wb = Workbooks.Add
wb.Activate

'元のブックに戻す
originalWb.Activate
End Sub

4. 作成したブックを別名で保存し、自動切り替え

保存した新規ブックを、アクティブ状態で残す例です。

Sub CreateSaveAndActivate()
Dim wb As Workbook
Set wb = Workbooks.Add

wb.SaveAs ThisWorkbook.Path & "\NewBook.xlsx"
wb.Activate
End Sub

5. まとめ

  • Workbooks.Add の戻り値を変数に格納すると、作成したブックを簡単に制御できる
  • wb.Activate で新規ブックをアクティブに切り替え可能
  • 複数ブックがある場合は、元のブックを記録して切り替えると安全

コメント

タイトルとURLをコピーしました