目次

目的

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

目次まで戻る

その一例

  1. 同じフォルダにワークブックを 2 つ準備しました。
    「A.xls」と「B.xls」。
    「A.xls」と「B.xls」。
  2. 「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
  3. イミディエイトウィンドウに以下の内容が出力されました。「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

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

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

目次まで戻る

同じカテゴリの投稿(Excel VBA)

前後の投稿