GEN MUTO'S HOMEPAGE  エクセル大事典  エクセルVBAを極める

エクセルExcel大事典 エクセル大事典TOPページへ
 ■ エクセルVBA中級編−VBAでいろんなテクニック
  VBAからVBEを操作しよう!1
 
■ VBAからVBEを操作しよう!1

VBE(Visual Basic Editor)は、VBAの開発になくてはならない、必須のエディタです。このVBEをVBAから操作したいと思うことがよくあります。

例えば、複数ブックのプロジェクト内容を書き出したり、モジュールのコードをテキストファイルで書き出したり、VBAプロジェクト(VBAProject)にマクロでパスワードを設定したりという具合です。

VBAからVBEを操作する方法を覚えておくと、開発者の負担を減らすマクロを開発のいたるところで利用することができるようになります。

※VBAからVBEを操作するには、[ツール]メニューの[マクロ]、[セキュリティ]をクリック、[セキュリティ]ダイアログボックスの[信頼できる発行元]タブにある[Visual Basicプロジェクトへのアクセスを信頼する]チェックボックスをオンにする必要があります。



■VBProjectオブジェクトを利用する

VBProjectオブジェクトは、プロジェクト全体を表すオブジェクトでApplicationオブジェクトの配下にあります。VBProjectオブジェクトを取得することで、プロジェクト全体の情報を知ることができます。

例:
Sub Test()
  Dim MyProject As Object

  Set MyProject = Application.VBE

  Debug.Print MyProject.VBProjects.Count
  Debug.Print MyProject.VBProjects(1).Name
  Debug.Print MyProject.VBProjects(1).Filename
  Debug.Print MyProject.VBProjects(1).Protection
  Debug.Print MyProject.VBProjects(2).Name
  Debug.Print MyProject.VBProjects(2).Filename
  Debug.Print MyProject.VBProjects(2).Protection
End Sub
 
"Book1"と"Book2"の2つのブックを開いた状態でプロシージャ"Test"を実行したとき、イミディエイトウィンドウに次のように出力されたとします。




VBAProject1
C:\Book1.xls

VBAProject2
C:\Book2.xls
0

Countプロパティは現在アプリケーションで開かれているプロジェクトの数を返します。この場合、Book1とBook2の2つのプロジェクトが開かれているので2が返ります。

Nameプロパティはプロジェクトの名前を返します。VBProjectsコレクションの1番目のプロジェクト、このケースではBook1のプロジェクト名"VBAProject1"が返りました。

※プロジェクト名は[VBAProjectのプロパティ]の[全般]タブ、[プロジェクト名]から変更することが可能です。[VBAProjectのプロパティ]は、[ツール]メニューより[VBAProjectのプロパティ]をクリックするか、または[プロジェクトエクスプローラ]でプロジェクトを右クリック、ショートカットメニューの[VBAProjectのプロパティ]をクリックすることで表示することができます。

Filenameプロパティは、プロジェクトのブックの存在するパスを返します。Book1がCドライブ直下に保存されているとき、"C:\Book1.xls"が返ります。

※開いているブックがまだ保存されていないとき、Filenameプロパティは実行時エラー'76'を返します。

Protectionプロパティは、プロジェクトがパスワード保護され内容を表示していないときは1を、内容を表示しているときは0を返します。ユーザーがパスワードを入力し、保護されている内容を表示しているときも、同様に0を返します。

※Protectionプロパティは読み取り専用のプロパティのため、値を設定することはできません。VBAからProtectionプロパティを使用して、プロジェクトの保護を解除することはできません。


■VBComponentオブジェクトを利用する

VBComponentオブジェクトは、プロジェクトに含まれる標準モジュールやクラスモジュールなどを表します。プロジェクトにどのようなモジュールが含まれているかは、このVBComponentオブジェクトを調べることで知ることができます。

例:
Sub Test()
  Dim MyComponent As Object
  Dim i As Long

  Set MyComponent = ActiveWorkbook.VBProject

  For i = 1 To MyComponent.VBComponents.Count
    Debug.Print MyComponent.VBComponents(i).Name
    Debug.Print MyComponent.VBComponents(i).Type
  Next i
End Sub

この例では、現在アクティブなブックのプロジェクト内にある、すべてのコンポーネント名と種類をイミディエイトウィンドウに出力します。ちなみに、
ActiveWorkbook.VBProject

ThisWorkbook.VBProject
に変更すると、プロシージャ"Test"が記述されているブックを処理の対象とします。複数ブックが開かれているとき、そのブックがアクティブかどうかは関係ありません。

Countプロパティはプロジェクトに含まれるコンポーネントの数を返します。アクティブブックのプロジェクトの内容が、



のとき、Countプロパティは5を返します。

Nameプロパティは対象となるコンポーネントのオブジェクト名を返します。シートモジュールの場合、シート見出しのシート名ではなく、シートモジュールのオブジェクト名が返るので注意してください。

Typeプロパティはコンポーナントの種類を表す数値を返します。返す値は次の通りです。

内容
1 標準モジュール 
2 クラス モジュール
3 Microsoft Form 
11 ActiveX デザイナ 
100 Document モジュール 

例:
Sub Test()
  Dim MyWorkbook As Object
  Dim MyComponent As Object
  Dim i As Long

  For Each MyWorkbook In Workbooks
    Set MyComponent = Workbooks(MyWorkbook.Name).VBProject

    For i = 1 To MyComponent.VBComponents.Count
      Debug.Print MyComponent.VBComponents(i).Name
      Debug.Print MyComponent.VBComponents(i).Type
    Next i
  Next
End Sub

この例では、現在開かれているすべてのブックの、すべてのコンポーネント名と種類をイミディエイトウィンドウに出力します。

Addメソッドを使用すると、プロジェクトにコンポーネントを追加することができます。このとき、引数を指定することで、追加するコンポーネントの種類を指定することができます。

内容
1 標準モジュール 
2 クラス モジュール
3 Microsoft Form 

上の例で、標準モジュールのコンポーネントを追加するときは、
MyComponent.VBComponents.Add 1
と記述します。



次回はモジュール内のコードを取得するCodeModuleオブジェクトについて解説します。

>> 次の話にすすむ


サイト内検索ができます

Microsoft Most Valuable Professional

Microsoft MVP Excel
武藤 玄 プロフィール
 

■■■ 執筆した書籍 ■■■
 

EXCEL VBA 業務自動化
 

Excel VBA を5日でマスターする本
 

仕事を速くする Excel VBA 入門
 

Excel VBAと業務改善のポイントがわかる本
 

Access VBA ベーシック スタンダード
 

Excel VBA アクションゲーム作成入門
 

■■■ 連載中の記事 ■■■
 

Excel VBAで業務改善!
 

実務で使うExcel VBA
 


TOPページ


■ エクセルVBA超入門

 ・9ステップで"Hello World!"
  からオブジェクト指向まで!
  1."Hello World!"を表示しよう
  2.基本はデータの入出力
  3.繰り返し処理
  4.シートで簡易データベース
  5.名前をつけよう
  6.構造化プログラムに挑戦
  7.構造体を使ってみよう
  8.フォームを使ってみよう
  9.オブジェクト指向に挑戦

■ エクセルVBA中級編

 ・VBAでいろんなテクニック
  変数・関数のスコープ
  引数の参照方法を明示
  配列の中身を一気に複写
  識別子がよいコードを作る
  データ定義型をもっと知ろう
  定数と列挙型を活用しよう
  エラー処理の重要性1
  エラー処理の重要性2
  いろいろな条件分岐
  いろいろな繰り返し処理
  演算子について知ろう
  文字列操作 連結 変換 置換
  文字列操作 検索 比較 書式
  日付操作関数を知ろう
  数値操作・評価・その他関数
  並び替えソートをマスター
  いろいろな検索をマスター
  VBEditorを使いこなそう
  マクロの記録を活用しよう1
  マクロの記録を活用しよう2
  VBAからVBEを操作しよう1
  VBAからVBEを操作しよう2
  VBAからVBEを操作しよう3
 ・ワークシートを使いこなす
  セルの参照をマスターしよう
  セルの選択をマスターしよう
  セルの操作をマスターしよう
  セルの書式設定をマスターしよう
  行・列の操作をマスターしよう
  シートの参照をマスターしよう
  シートの操作をマスターしよう
  ブックの操作をマスターしよう
  ウィンドウの操作をマスターしよう
  イベントプロシージャを活用しよう
  ワークシートを印刷しよう1
  ワークシートを印刷しよう2
  音声(読み上げ)機能を操作しよう
  グラフを操作しよう
 ・ユーザーフォームを使いこなす
  ユーザーフォームを使おう
  UserFormsオブジェクト
  Labelコントロール
  TextBoxコントロール
  ComboBoxコントロール
  ListBoxコントロール
  CheckBoxコントロール
  OptionButtonコントロール
  ToggleButtonコントロール
  CommandButtonコントロール
  ScrollBarコントロール
  SpinButtonコントロール
 ・VBA関数の一覧
  Aから始まる関数の一覧
  Cから始まる関数の一覧
  Dから始まる関数の一覧
  Eから始まる関数の一覧
  Fから始まる関数の一覧
  Gから始まる関数の一覧
 
■ エクセルVBAを極める
 VBAスーパーテクニック
 
 ・データベースへ接続してみよう!
  CSVファイルへの接続
  ワークシートへの接続
  mdbファイルへの接続
  SQL Serverへの接続
  ADOレコードセットの操作1
  ADOレコードセットの操作2
 ・ファイルを操作してみよう!
  FileSystemObjectの操作
  Drive File Folderの操作
  TextStream ダイアログ
  ステートメントでファイル操作1
  ステートメントでファイル操作2
 ・他アプリと連携してみよう!
  ActiveXオートメーションの操作
 ・ゲーム技でマクロを超える
  エクセルで音を鳴らす1
  エクセルで音を鳴らす2  
  スクリーン座標を取得
  様々なイベント取得
  リボンUIを制御しよう1
  リボンUIを制御しよう2
  シート上でアニメを動かそう
 
■ 一歩上行くエクセル
 基本操作の完全マスター!

 
 ・あなたはいったい
  エクセルで何をしたいのか?
  エクセルで業務効率化
  エクセル関数を使いこなす
  エクセルの便利技
  エクセルは最高の帳票ツール
 ・エクセル基本操作上級編!
  セル選択、コメント、シリアル値
  オート機能を使いこなそう!
  参照、条件付書式、入力規則
  関数をもっと理解しよう!
  配列数式を有効利用しよう!
  データの正規化をしよう!
  ショートカットキーを利用しよう1
  ショートカットキーを利用しよう2
  Office用アプリを作成しよう!
  PowerPivotとExcelで簡単BI!
 ・世間の誤ったエクセルの
  べからず集
  エクセルで文章を書くべからず
  エクセルで図形を描くべからず
  エクセルでシステムをつくるな
 
■ エクセル関連その他

 ・エクセルコミニュティにあなたも
  参加しませんか?
  Excel関連リンク・コミニュティ
 ・VBの理解がVBAをマスターする
  最短距離!
  VB関連の老舗・大家サイト
 ・エクセルExcel大事典掲示板
 ・プライバシーポリシー

2000アイテムを超えるラベルを販売
送料無料、即納対応の優良ショップ
今買っているラベルより確実に安い!
OAラベルの販売専科グラフトラベル




エクセルExcel大事典ははリンクフリーです エクセル大事典Excel大事典
お問い合わせはこちら gengengen@yahoo.co.jp

Copyright© Gen Muto 武藤 玄 All Rights Reserved,