【Excel VBA】ブックの参照(Workbooks/ActiveWorkbook/ThisWorkbook)

りゅう

こんにちは!りゅう(@ryupong_b)です。
今回は、ブックを参照する方法を解説します。

はじめに

今回は、ブックを参照する方法をご紹介します。
ブックを参照するには、「このブックに対して処理したいけど、どうしたらいいんだろう…。」のような悩みを解決します。
本記事では、サンプルコードを用いてコピペで使える実践的なコードもご紹介します。

この記事を読むメリット
  • ブックを参照する3つの方法が分かります。
  • 基本的な構文や引数まで、丁寧に解説します。
  • サンプルコードを用いてコピペで使える実践的なコードもご紹介します。

前提

#プロパティ説明
1Workbooks特定のブックを参照する
2ActiveWorkbookアクティブブックを参照する
3ThisWorkbook実行中のVBAコードが記述されているブックを参照する
ブックの参照 – 関連プロパティ

基本情報

Workbooksプロパティ

特定のブックを参照するには、Workbooksプロパティを使用します。
引数に、どのブックを参照するかを指定します。

構文

構文

Workbooks(Index)

緑色は引数です。

引数

#項目名必須/任意説明
1Index任意インデックス番号、またはブック名を指定します。
省略した場合は、開いているすべてのブックを参照します。
Workbooksプロパティ

インデックス番号とは
ブックを開いた順番に自動的に割り振られる数字です。
1、2、3…と、1からの番号が割り振られます。

存在しないインデックス番号、開いていないブック名を指定するとエラーとなります。
存在するブックを参照するようにしてください。

ActiveWorkbookプロパティ

Active状態のブックを参照するには、ActiveWorkbookプロパティを使用します。
Applicationオブジェクト配下のプロパティですが、通常では以下構文のように省略して記載します。

構文

ActiveWorkbook

Active状態のブックとは、最前面に表示されているブックのことを指します。

ThisWorkbookプロパティ

実行中のVBAコードが記述されているブックを参照するには、ThisWorkbookプロパティを指定します。
Applicationオブジェクト配下のプロパティですが、通常では以下構文のように省略して記載します。

構文

ThisWorkbook

サンプルコード

指定のブックを参照する

サンプルコード
Public Sub referenceBook()

    ' アクティブシート名を A1セルに出力する
    Range("A1").Value = ActiveWorkbook.Name

    ' インデックス番号「2番」のブック名をアクティブにする
    Workbooks(2).Activate

    ' 開いているブック「Book1.xlsx」をアクティブにする
    Workbooks("Book1.xlsx").Activate

    ' 実行中のVBAコードが記述されているブック名をアクティブにする
    ThisWorkbook.Activate
End Sub

最初/最後に開いたブックを参照する

サンプルコード
Public Sub referenceWorkbookForRelative()

    ' 最初に開いたブックをアクティブにする
    Workbooks(1).Activate

    ' 最後に開いたブックをアクティブにする
    Workbooks(Workbooks.Count).Activate
End Sub
めい

ご紹介したコードでは、ブックを参照後にアクティブにするコードを掲載しています。
あくまで参考例ですので、参照後にどういった処理を実施するかは用途により変更してください。

最後に

今回は、ブックを参照する方法をいくつかご紹介させて頂きました。
この記事が、皆さんのお力になれば幸いです!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大手外資系コンサルティングファーム勤務。ExcelVBA歴は8年。金融関係のプロジェクトにて約100万レコードを処理するマクロの開発実績あり。ExcelVBAの基礎・応用情報を発信中。

コメント

コメントする

CAPTCHA