Excelスキルアップコレクション
           〜 Something U Want 〜


Google  

WWW を検索
Excelスキルアップコレクション内 を検索
 @     Top  >     Excelプロフェッショナルエンジニアテクニック Topics  >     (06) Excelブックに存在するモジュールの行数を取得する

 
(06) Excelブックに存在するモジュールの行数を取得する

 Excelブックに存在するモジュールの行数をVBAにて調べる方法を紹介します。

 Visual Baisc プロジェクトへのアクセスを許可します。

  「(04) Visual Baisc プロジェクトへのアクセスを許可する方法」

 以下のようにVBAProjectにモジュールを含むExcelブックを想定します。
 下記サンプルコードをModule1に記載して下さい。
<Module1>

 1行目:  Option Explicit
 2行目:  
 3行目:  Public Sub Sample_MakeModuleLines_01()
 4行目:  
 5行目:      ' ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
 6行目:      ' 参照設定:
 7行目:      ' 「Microsoft Visual Basic for Application Extensibility」
 8行目:      ' ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
 9行目:      
10行目:      ' このブックのVBProjectをオブジェクト変数に格納する。
11行目:      Dim Obj As VBIDE.VBProject
12行目:      Set Obj = ThisWorkbook.VBProject
13行目:  
14行目:      ' VBProjectに存在するコンポーネント数を変数に格納する。
15行目:      Dim CompCnt As Long
16行目:      CompCnt = Obj.VBComponents.Count
17行目:  
18行目:      ' VBProjectに存在するコンポーネントを一つずつ参照する。
19行目:      Dim lp As Long
20行目:      For lp = 1 To CompCnt
21行目:          With Range("A1")
22行目:              .Offset(lp - 1, 0).Value = Obj.VBComponents(lp).Name
23行目:              .Offset(lp - 1, 1).Value = Obj.VBComponents(lp).Type
24行目:              .Offset(lp - 1, 2).Value = Obj.VBComponents(lp) _
25行目:                  .CodeModule.CountOfLines
26行目:          End With
27行目:      Next
28行目:  
29行目:      ' オブジェクトを破棄する。
30行目:      Set Obj = Nothing
31行目:  
32行目:  End Sub
 ここで利用しているのはCodeModuleプロパティのCountOfLinesプロパティです。
CountOfLinesプロパティコード モジュール内のコードの行数を表す

 このサンプルコードを実行すると、以下の結果が返ります。C列がモジュールの行数を指しています。
  


 ここで一つ気になるのは、Module1にサンプルコードを記載しただけなのに、Module1以外のモジュールの行数が「2行」となっています。これは、「Option Explicit + (改行)」の2行が行数としてカウントされているからです。「Option Explicit + (改行)」とは、VBEのオプションで、変数の宣言を強制させるコードです。以下のように、オプションで変数の宣言を強制する(R)のチェックボックスをオンにしている場合に、自動的に2行分のコードがVBEにて書き込まれます。
ページの先頭へ