2014/11/20

Excel VBA のオブジェクト ブラウザの使い方メモ

Excel やAccessのVBAを使った業務アプリケーションを開発する際、オブジェクト ブラウザを出来るだけ使うようにしています。
プロパティやメソッド等、どのようなものがあるのかを適時把握するため癖づけていますが、いまいち使いづらいなぁと・・・
しかし、昨日開催された「Microsoft Community Camp 2014 -2nd Round-」のオンライン セッション「Excel - 達人が教える基礎と応用(Microsoft MVP for Excel 伊藤 潔人さん)」で一気に開眼しました!
今回は、オンライン セッションで勉強した内容をメモ。
開発効率に直結するので、視聴して大正解でした!

オブジェクト ブラウザとは?

VBAで使うオブジェクト古いコンテンツですが、msdn「オブジェクト ブラウザを使用する - Microsoft Office 2000/Visual Basic プログラマーズ ガイド」によるとオブジェクト ブラウザとは
  • VBA プログラミング環境を含むすべての Microsoft 製品で使用することが出来る
  • ライブラリが参照される全てのCOMコンポーネントを調べる事が出来る
    • オブジェクト
    • メソッド
    • プロパティ
    • イベント
    • 定数
を表示することができる、との事。
Excel 2013だと、上記以外にクラスやモジュールも調べる事が出来ます。

使い方

例えば、Excel Worksheetsの[Add2]メソッドの詳細情報を調べます。
VBE上でWorksheets.(ドットまで)を入力するとインテリセンスが働き、メソッドやプロパティの一覧が表示されるので、[Add2]メソッドを選択。
この後に半角スペースを入力すると引数や戻り値の型が分かります。
image
では、スクリプトを書いていない時にクラスやメンバーを調べるにはどうすればよいか?
この場合にオブジェクト ブラウザが役立ちます。
オブジェクト ブラウザで[Worksheets]クラスの[Add2]メソッドを調べるには下記手順となります。
  • [F2]ボタンを押し、オブジェクト ブラウザを開く
  • [検索文字列ボックス]に[Add2]と入力
    ※下記画像の双眼鏡の左側にある検索ボックス
  • [検索結果]ペインの[Worksheets]クラスの[Add2]メソッドを選択
  • [Add2]メソッドに関する情報は[詳細ペイン]に表示される
    ※下記画像の中央付近
    • [Add2]メソッドは、Functionである
    • 引数は4個ある(Before, After, Count, NewLayout)
    • 戻り値はオブジェクト型である
    • Excel.Worksheets クラスのメンバーである
image

オブジェクト ブラウザのアイコン

アイコンの意味を中途半端に理解していたので、表にまとめてみました。
image Library(ライブラリ)
image Global(グローバル)
image Property(プロパティ)
image Method(Sub or Function)
image Event(イベント)
image Class(クラス)
image Module(モジュール)
image Enum(列挙型)
image Const(定数)

使い方を調べる~ヘルプ

オブジェクト ブラウザでプロパティやメソッドを調べる事が出来るが、詳細情報(例など)がないので使いづらい・・・と思っていましたが、
  • オブジェクトを選択した状態でF1ボタンを押す
  • 又は、ヘルプボタン(image)をクリック
すると該当のヘルプ情報が表示されます。
Office 2013の場合、ブラウザが立ち上がりOffice デベロッパー センターのコンテンツが表示されます。
今まではオブジェクト ブラウザで調べる→ブラウザを立ち上げる→Office デベロッパー センターで別途調べる、という無駄な動作をしていたのでこれは便利。
image

グローバル クラス

msdnのコンテンツ「Excel オブジェクト モデルの概要」を読むと分かりますが、Excel はApplication オブジェクトがExcel全体を表しています。
私もそうですが、Application.xxxと記述する事は少なくないものの、WorkbooksやWorksheetsの場合は記述していません。
例として、1番目のワークシート名を取得する場合。
image
Application.を書かなくてもいい理由は、グローバル クラスの存在があるためだそうです。
グローバル クラスのメンバー(プロパティやメソッド、定数)はApplication.を書かなくても動作します。
image
書かない理由をよく把握せずにスクリプトを書いていましたが、これで少し知識が深まりました。

_Defualt プロパティ

オンライン セッションで初めて知った、クラスの既定メンバー[_Default]プロパティ。
通常は[非表示のメンバー]のため見えませんが、設定を変更する事で表示されます。
image
image
既定というだけあって、他プロパティを指示しています。
Range クラスを調査しスクリプトを実行すると、_Default プロパティ=Item プロパティである事が分かります。
image
image

File System Objectのクラス・メソッド・プロパティを調べる場合

ファイル システムの操作するスクリプトを書く場合、毎回ブログサイト等を参考にしていました。
しかし、[参照設定]画面から[Microsoft Scripting Runtime]ライブラリを追加する事で、オブジェクト ブラウザからメンバーを確認できるようになります。
※Microsoft Scription Libraryではありません。Runtimeです。
これは知りませんでした!便利です。
image
image

Channel9で視聴できます


Microsoft Community Camp 2014 -2nd Round-」のオンライン セッション「Excel - 達人が教える基礎と応用(Microsoft MVP for Excel 伊藤 潔人さん)」の内容は、ツールを使いこなすための基礎とTipsでした。
日々使っているツールだけに使いこなす事が出来ればインターネット上で調べる手間が少なくなるため、結果 開発時間の短縮につながると考えています。ツールは使いこなして何ぼですよねぇ。
尚、「Microsoft Community Camp 2014 -2nd Round-は残すところ2日(20,21日)となります。
お時間ある方、是非視聴してみてください。
視聴にはLyncが必要になりますので、事前に接続テストされることをオススメします。
余談:Access やWord、PowerPointでも使えます
VBAはOffice 製品で使う事が出来ます=オブジェクト ブラウザーも使えます。
Excel のオブジェクトは理解してるが、Accessは理解していない・・・という時に役立つはずです。
使い方は共通なため、使い方さえ分かればご自身でやりたい事がどんどん出来るはずです。
是非使ってみましょう!
スポンサーリンク

スポンサーリンク