■ 最新の投稿

VBAProject技:Excelのモジュール行数を一覧で調べる!

モジュールの行数を一覧化すると、コードの偏りや肥大化が見えてきます。

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

【前提】

以下のようにVBAProjectにモジュールを含むExcelブックを想定します。

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

Excel VBAで『Visual Basicプロジェクトへのアクセス』を有効にする方法

② 「Microsoft Visual Basic for Application Extensibility」を参照設定します。

③ 次のプログラムコードを記載します。

Public Sub Sample_MakeModuleLines_01()

    ' ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    ' 参照設定:
    ' 「Microsoft Visual Basic for Application Extensibility」
    ' ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
    
    ' このブックのVBProjectをオブジェクト変数に格納する。
    Dim Obj As VBIDE.VBProject
    Set Obj = ThisWorkbook.VBProject

    ' VBProjectに存在するコンポーネント数を変数に格納する。
    Dim CompCnt As Long
    CompCnt = Obj.VBComponents.Count

    ' VBProjectに存在するコンポーネントを一つずつ参照する。
    Dim lp As Long
    For lp = 1 To CompCnt
        With Range("A1")
            .Offset(lp - 1, 0).Value = Obj.VBComponents(lp).Name
            .Offset(lp - 1, 1).Value = Obj.VBComponents(lp).Type
            .Offset(lp - 1, 2).Value = Obj.VBComponents(lp) _
                .CodeModule.CountOfLines
        End With
    Next

    ' オブジェクトを破棄する。
    Set Obj = Nothing

End Sub

このVBAを実行すると、以下の結果が得られます。

行数を知るだけでも、リファクタリングのヒントが見えてきます。


Comments

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です