|
8#

樓主 |
發(fā)表于 2010-10-31 15:06:07
|
只看該作者
6.5 獲取過程代碼行數信息
6.5.1指定過程總代碼行數
- '函數功能:獲得指定過程總的代碼行數(含過程中的所有空行及注釋)
- Public Function TotalCodeLinesInProc(CompsNameOrIndex, _
- strProcName As String, _
- Optional ProcKind As vbext_ProcKind = 0) As Long
- Dim VBProj As VBProject '工程對象
- Dim VBComp As VBComponent '部件對象
- Dim CodeMod As CodeModule '代碼模塊
-
- '設定為當前工程
- Set VBProj = VBE.ActiveVBProject
- '設定為指定部件
- Set VBComp = VBProj.VBComponents(CompsNameOrIndex)
- '設定為指定部件代碼模塊
- Set CodeMod = VBComp.CodeModule
- '過程計數輸出
- TotalCodeLinesInProc = CodeMod.ProcCountLines(strProcName, ProcKind)
- End Function
- '******************************************************************
- '調用示例:獲得部件"bas_ProcInfo"模塊中,"ShowProcedureInfo"過程總行數
- Debug.Print TotalCodeLinesInProc("bas_ProcInfo", "ShowProcedureInfo")
復制代碼
6.5.2 指定過程代碼起始行數
- '函數功能:獲得指定過程代碼起始行(從過程之上的空行和注釋計算)
- Public Function StartLineInProc (CompsNameOrIndex, _
- strProcName As String, _
- Optional ProcKind As vbext_ProcKind = 0) As Long
- Dim VBProj As VBProject
- Dim VBComp As VBComponent
- Dim CodeMod As CodeModule
-
- Set VBProj = VBE.ActiveVBProject
- Set VBComp = VBProj.VBComponents (CompsNameOrIndex)
- Set CodeMod = VBComp.CodeModule
-
- StartLineInProc = CodeMod.ProcStartLine(strProcName, ProcKind)
- End Function
- '******************************************************************
- '調用示例:獲得部件"bas_ProcInfo"模塊中,"ShowProcedureInfo"過程起始行號
- Debug.Print StartLineInProc ("bas_ProcInfo", "ShowProcedureInfo")
復制代碼
6.5.3 指定過程實際代碼起始行數
- '函數功能:獲得過程第一行代碼行(從過程的實際代碼行計算,不含過程之上空行和注釋)
- Public Function CodeBodyLineInProc (CompsNameOrIndex, _
- strProcName As String, _
- Optional ProcKind As vbext_ProcKind = 0) As Long
- Dim VBProj As VBProject
- Dim VBComp As VBComponent
- Dim CodeMod As CodeModule
-
- Set VBProj = VBE.ActiveVBProject
- Set VBComp = VBProj.VBComponents(CompsNameOrIndex)
- Set CodeMod = VBComp.CodeModule
-
- CodeBodyLineInProc = CodeMod.ProcBodyLine(strProcName, ProcKind)
- End Function
- '******************************************************************
- '調用示例:獲得部件"bas_ProcInfo"模塊中,"ShowProcedureInfo"過程實際起始行號
- Debug.Print CodeBodyLineInProc ("bas_ProcInfo", "ShowProcedureInfo")
復制代碼
6.5.4 指定過程實際代碼行數
- '函數功能:獲得指定過程實際代碼行數(不包含空行和注釋行)
- Public Function CodeLinesInProc(ByVal CompsNameOrIndex, _
- ByVal strProcName As String, _
- Optional ProcKind As vbext_ProcKind = 0) As Long
- Dim VBProj As VBProject
- Dim VBComp As VBComponent
- Dim CodeMod As CodeModule
-
- Dim ProcStart As Long '代碼起始行
- Dim ProcTotal As Long '代碼總行數
- Dim I As Integer '循環(huán)變量
- Dim strCode As String '代碼
- Dim LineCount As Long '行計數變量
- 實例化對象
- Set VBProj = VBE.ActiveVBProject
- Set VBComp = VBProj.VBComponents(CompsNameOrIndex)
- Set CodeMod = VBComp.CodeModule
- '獲取開始行號和總行數
- ProcStart = CodeMod.ProcStartLine (strProcName, ProcKind)
- ProcTotal = CodeMod.ProcCountLines(strProcName, ProcKind) + ProcStart
-
- For I = ProcStart To ProcTotal
- '將代碼賦值給字符串變量
- strCode = CodeMod.Lines(I, 1)
- '跳過空行和注釋行
- If Trim (strCode) = vbNullString Or Left (Trim (strCode), 1) = Chr (39) Then
- Else
- LineCount = LineCount + 1
- End If
- Next I
- '實際行數輸出
- CodeLinesInProc = LineCount
- End Function
- '******************************************************************
- '調用示例:獲得部件"bas_ProcInfo"模塊中,"ShowProcedureInfo"過程實際行數
- Debug.Print CodeLinesInProc ("bas_ProcInfo", "ShowProcedureInfo")
復制代碼 |
|