Excel VBA Programming

[ExcelVBA] ブック指定の方法(Activateメソッド)

2020年3月22日

本記事はエクセル2019で動作確認を行っています。

 

 

困ってます
ExcelVBAを使用してブックの指定方法を教えて下さい。

 

本記事はこのような疑問にお答えします。

 

サイト運営者であるロンピー(@ronpeee0809)はExcelVBAを使用して10年以上会社部内の業務改善を行っています。

これからVBAを学ぶ方がスムーズに学習を進められる手助けをしていきます。

ロンピー

 

エクセルでは複数のブックをまたいで、画面を切り替えながら操作することがあります。

VBAコードを指定したブックに対応させるために、ブックの操作方法を知っておきましょう。

 

前提としておさえておくおポイントは

・ブック一つをWorkbookオブジェクト

・ブックが複数存在する場合、WorkbookオブジェクトをまとめてWorkbooksコレクション

と呼びます。

 

 

ブックの指定方法

 

ブックは以下のように表すことができます。

 

<Workbookオブジェクト>

Workbooks(1)

→一つ目に開いたブック

Workbooks(“ブック名”)

→ブック名を「”(ダブルクォーテーション)」で囲む。

 

後述した記述方法の方が後でコードを見たとき可読性が高まります。

できるだけブック名を指定するようにしましょう。

 

Workbookの書き方が分かれば、次はブックの指定方法を知っておきましょう。

希望のブックを選択するにはActivateメソッドを使用します。

 

(式)

Workbooks(“ブック名”).Activate

 

Sub ブック指定()

 Workbooks("Book2").Activate

End Sub

 

(実行前)

 

(実行後)

 

 

Book1からBook2へ操作するブックが変わりました。

VBAでは操作したいブックを前面に出しておくことでコードの対象が決まります

必ず操作するブックをActivateで指定するようにしましょう。

 

アクティブ状態ではその後のコードにWorkbookの記述は省略することはできますが、Worksheetは必ず指定するようにすることをおすすめします。

開くブックが1つだけということは現場では少ないかもしれません。

複数の場合は、ブックが変わるごとにブックをActivateする。

アクティブ中はWorkbookは省略してもいいが、Worksheetは指定するでいきましょう。

 

 

作業中のブックの参照方法

 

(式)

ActiveWorkbook

 

現在作業中のブックはActiveWorkbookプロパティで指定することができます。

 

Sub 作業中のブック()

 ActiveWorkbook.Worksheets("Sheet1").Range("A1").Value = "作業中"

End Sub

 

(実行後)

 

 

 

ブックの名前やパス名を取得する

 

ブックの名前やパス名を知るにはWorkbookオブジェクトの以下のプロパティを指定することで得ることができます。

 

(式)

オブジェクト.Name

オブジェクト.Path

オブジェクト.FullName

 

Nameプロパティではブック名を取得できます。

(例)ActiveWorkbook.Name→Book1.xlsm

 

Pathプロパティではパス名を取得できます。

(例)ActiveWorkbook.Path→C:\Users\ \Desktop\sampleVBA

 

FullNameプロパティではパス名+ブック名を取得できます。

(例)ActiveWorkbook.FullName→C:\Users\ \Desktop\sampleVBA¥Book1.xlsm

 

ファイルの階層が下に行くごとに「¥」でつなげていきます。

 

ブックの指定方法について解説しました。

 

ブックに関する内容は以下もご参考ください。

>>ブックを開く・閉じる

>>ブックの保存

 

最後まで目を通していただきありがとうございます。

 

-Excel VBA, Programming
-

Copyright© Ronpeee blog , 2021 All Rights Reserved.