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
で新規ブックをアクティブに切り替え可能- 複数ブックがある場合は、元のブックを記録して切り替えると安全
コメント