ActiveWorkbook と ThisWorkbook の違い。

執筆者:

カテゴリ:

目的

  • ActiveWorkbook と ThisWorkbook の違いを見てみる。
  • 別のワークブックを開いた時の両者の Name を取得してみる。

その一例

  1. 同じフォルダにワークブックを 2 つ準備しました。
「A.xls」と「B.xls」。
「A.xls」と「B.xls」。
  • 「A.xls」で下記マクロを実行してみます。
    Sub ActiveWorkbookとThisWorkbookの違い()
    Debug.Print "「B.xls」を開く前"
    Debug.Print "Active="; Tab; ActiveWorkbook.Name
    Debug.Print "This="; Tab; ThisWorkbook.Name

    Dim b As Workbook
    Set b = Workbooks.Open(ThisWorkbook.Path & "¥" & "B.xls") 'B.xls を開く

    Debug.Print "「B.xls」を開いた後"
    Debug.Print "Active="; Tab; ActiveWorkbook.Name
    Debug.Print "This="; Tab; ThisWorkbook.Name

    b.Close False 'B.xls を閉じる

    Debug.Print "「B.xls」を閉じた後"
    Debug.Print "Active="; Tab; ActiveWorkbook.Name
    Debug.Print "This="; Tab; ThisWorkbook.Name
    End Sub
  • イミディエイトウィンドウに以下の内容が出力されました。「B.xls」を開いた後は、アクティブなワークブックが「B.xls」になっています。
  • 「B.xls」がアクティブになっている
。
    「B.xls」がアクティブになっている 。

    上記マクロの「B.xls」の文字を「A.xls」に変更して「B.xls」から実行すると以下の結果になりました。

    「B.xls」から「A.xls」を開いた結果。
    「B.xls」から「A.xls」を開いた結果。

    テスト環境

    • Windows 10(64 ビット)
    • Microsoft Office Excel 2003

    以前、両者の違いを意識せずに使用していたところ、思わぬ処理がされてしまった覚えがあります。

    以上、閲覧ありがとうございました。