昱得資訊工作室
麻辣學園
歡迎光臨, 訪客. 請先 登入註冊一個帳號.
您忘了 啟用您的帳號嗎?
2008-09-09, 03:10:21
首頁 說明 登入 註冊 贊助論壇 想當作者?
新聞: Wink有贊助本論壇經營的會員,請務必來信通知小誌,這樣才能為您更新會員群組喔!!


+  麻辣家族討論區
|-+  MS Office 系列
| |-+  EXCEL
| | |-+  Excel程式區 (版主: hsieh)
| | | |-+  (不急)關於巨集統計之問題 (VBComponents)
0 會員 以及 1 訪客 正在閱讀本篇主題. « 上一篇主題 下一篇主題 »
頁: [1] 向下 列印
作者 主題: (不急)關於巨集統計之問題 (VBComponents)  (閱讀 1819 次)
yem
高中生
*
離線 離線

文章: 110



(不急)關於巨集統計之問題 (VBComponents)
« 於: 2005-04-01, 03:44:04 »

請問可不可以寫一個巨集,求出一個workbook中全部的
sub、function、property程序名稱
且將它們各有幾行(不包括註解),分佈在什麼地方(如sheet1、module1、class1….等) 列出
例如:
種類程序名 位置行數
subtest1module1
15
property valcmdClass 
4

不急用,只是想討論寫法,如版主沒時間先從急用的回答吧!謝謝!!
« 最後編輯時間: 2005-04-03, 00:40:00 由 leonchou » 已記錄

What doesn't kill you will only make you stronger
leonchou
論壇維護群
*
離線 離線

文章: 1160


Re: (不急)關於巨集統計之問題
« 回覆文章 #1 於: 2005-04-02, 22:54:31 »

這問題問的好,了解VBComponents的結構也可做為類似問題的基礎。
注意事項 --
1. 以下要處理的Workbook必須已開啟。
2. 我不確定是否可列出Properties程序,你可試試。

Sub list_MyCodes()
r = 2
[A1:D1] = Array("種類", "程序名", "位置(模組)", "行數")
Set wb = Workbooks("tvprogram.xls") '要處理的Workbook
For Each VBC In wb.VBProject.VBComponents
  With VBC.CodeModule
    startLine = .CountOfDeclarationLines + 1 '由宣告區之後開始
    While startLine + numLines < .CountOfLines
      procName = .ProcOfLine(startLine, vbext_pk_Proc)
      numLines = .ProcCountLines(procName, vbext_pk_Proc)
      line1 = .Lines(.ProcBodyLine(procName, vbext_pk_Proc), 1)
      procType = Replace(Replace(Left(line1, InStr(line1, procName) - 2), _
              "Private ", ""), "Public ", "")
      Cells(r, 1) = procType
      Cells(r, 2) = procName
      Cells(r, 3) = VBC.Name
      Cells(r, 4) = numLines
      startLine = startLine + numLines
      r = r + 1
    Wend
  End With
Next
End Sub


ProcStartLine 和 ProcBodyLine屬性可能會令人混淆,故說明如下--
ProcStartLine:若該程序名稱上方含有註解,會傳回第一行註解的行號。
ProcBodyLine:始終傳回程序名稱所在那一行的行號。
« 最後編輯時間: 2005-04-03, 21:10:55 由 leonchou » 已記錄

yem
高中生
*
離線 離線

文章: 110



Re: (不急)關於巨集統計之問題 (VBComponents)
« 回覆文章 #2 於: 2005-04-03, 23:50:56 »

謝謝版主,收下研究,有問題再請教版主 Grin Grin Grin
已記錄

What doesn't kill you will only make you stronger
leonchou
論壇維護群
*
離線 離線

文章: 1160


Re: (不急)關於巨集統計之問題 (VBComponents)
« 回覆文章 #3 於: 2005-04-08, 13:25:31 »

貼上來變亂碼,那要不要改上傳檔案?
讓我們看看較完整的代碼是什麼樣 Roll Eyes
已記錄

yem
高中生
*
離線 離線

文章: 110



Re: (不急)關於巨集統計之問題 (VBComponents)
« 回覆文章 #4 於: 2005-04-09, 12:09:14 »

object.ProcOfLine(line, prockind) As String
prockind原來跟一些API參數一樣,可以返回資料來判斷程序種類,這種類型的參數在excel中,好像並不常見,Help中也沒提到 Smiley


貼了4、5次都貼不好,上傳文件好了 Azn

剛又刪了一行

[附件已被管理員刪除]
« 最後編輯時間: 2005-04-09, 16:35:00 由 yem » 已記錄

What doesn't kill you will only make you stronger
頁: [1] 向上 列印 
« 上一篇主題 下一篇主題 »
跳到:  


本頁花了 0.258 秒, 以及 20 次的資料庫查詢.