VBA ActiveWorkbookとThisWorkbook

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 5月 3, 2022

このチュートリアルでは、VBAのActiveWorkbookとThisWorkbookの違いについて説明します。

ActiveWorkbookとThisWorkbookの違い

VBAのActiveWorkbookとThisWorkbookの違いを知っておくことは重要です。 ActiveWorkbookは、現在アクティブになっているワークブックです。(ActiveSheetが現在アクティブなシートであるのと同様です。) ThisWorkbookは、VBAコードが格納されているワークブックです。 このワークブックが変更されることはありません。

ThisWorkbook

ThisWorkbookは、現在実行中のコードを含むワークブックを参照することができるオブジェクト変数とお考えください。 このコードでは、ThisWorkbookの名前でMessageBoxを表示します。

Sub Show_ThisWorkbook()
    MsgBox ThisWorkbook.Name
End Sub

vba thisworkbook activeworkbook

ActiveWorkbook

ActiveWorkbookは、現在アクティブなワークブックを参照するためのオブジェクト変数です。 このコードでは、ActiveWorkbookの名前でMessageBoxを表示します。

Sub Show_ActiveWorkbook()
    MsgBox ActiveWorkbook.Name
End Sub

VBAはActiveWorkbookを想定

ActiveWorkbook内のオブジェクト(例:シート)を操作する場合、ActiveWorkbookオブジェクトを明示的に指定する必要はありません。VBAは、あなたがActiveWorkbookを参照していると仮定します。 そのため、以下のコード:

ActiveWorkbook.Sheets("Sheet1").Range("$A$5").Value = 1

は、次のコードと同じです。

Sheets("Sheet1").Range("$A$5").Value = 1

新しいワークブックや開いたワークブックはアクティブ

新しいワークブックを作成したり、ワークブックを開いたりすると、そのワークブックは「アクティブ」になります。ワークブックを追加し、新しいワークブックの名前を取得するこのコードで、自分の目で確認できます。

Sub Show_ActiveWorkbook_Add()
    Workbooks.Add
    MsgBox ActiveWorkbook.Name
End Sub

ワークブックを追加したり開いたりした後、ActiveWorkbookオブジェクトを使用して変数に代入することができます。以下の例でその方法を紹介します。

ThisWorkbookとActiveWorkbookの例

アクティブなワークブックを切り替える

Workbook名を使ってアクティブなワークブックを切り替えます。

Workbooks("Book1").Activate

ワークブックの順番を表すインデックスを使用して、アクティブなワークブックを切り替えることもできます。(1 は最初に開かれた、または作成されたワークブック。)

Workbooks(1).Activate

ThisWorkbookをアクティブにする

ThisWorkbook(現在実行中のコードが格納されている)をアクティブにします。

ThisWorkbook.Activate

ActiveWorkbookを変数に設定する

ActiveWorkbookをワークブックオブジェクト変数に代入します。

Dim wb As Workbook
Set wb = ActiveWorkbook

ActiveWorkbookを閉じて保存する

ActiveWorkbookを閉じて保存します。

ActiveWorkbook.Close SaveChanges:=True

保存せずにActiveWorkbookを閉じる

ActiveWorkbookを保存せずに閉じます。

ActiveWorkbook.Close SaveChanges:=False

ActiveWorkbook – 名前を付けて保存

ActiveWorkbookを名前を付けて保存する。

Sub SaveAsActiveWorkbook()
    Dim result As Variant
    result = Application.GetSaveAsFilename(InitialFileName:="", _)
    FileFilter:="Excel マクロ有効ワークブック (*.xlsm), *.xlsm,Excel ワークブック (*.xlsx), *.xlsx")
    
    If result = False Then Exit Sub
    
    ActiveWorkbook.SaveAs result
End Sub
vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples