註冊
登錄
首頁
論壇版規
禁止列表
說明
地圖
數位書香
私人消息 (0)
公共消息 (0)
論壇任務 (0)
系統消息 (0)
好友消息 (0)
帖子消息 (0)
麻辣家族討論版版
»
Excel程式區
» Macro List
返回列表
下一主題
上一主題
發帖
[發問]
Macro List
PJChen
發短消息
加為好友
PJChen
(PJ)
當前離線
UID
6204
帖子
913
主題
150
精華
0
積分
1089
金錢
1089
點名
0
作業系統
win10
軟體版本
office 2019
閱讀權限
50
性別
女
在線時間
851 小時
註冊時間
2011-8-28
最後登錄
2023-7-19
暱稱:
PJ
大學生
帖子
913
主題
150
精華
0
積分
1089
點名
0
作業系統
win10
軟體版本
office 2019
閱讀權限
50
性別
女
註冊時間
2011-8-28
最後登錄
2023-7-19
1
#
跳轉到
»
倒序看帖
打印
字體大小:
t
T
發表於 2020-4-16 23:24
|
只看該作者
[發問]
Macro List
大大好,
隨著使用VBA的量增加後,有時要找程式的所在,要花好一會兒功夫,
且同一個Module會有多個Sub 名稱
想請問能否將模組中的所有Module & Sub 名稱
依序將Module1.Sub 名稱
Module2.Sub 名稱 ....
把它全部List 在TXT or excel中 ? 方便查找程式?
樓主熱帖
讓公式的值,直接帶入儲存格
找出各群組的眾數(不含0)
自動套表
不同的sheet相同的動作,如何讓它一次性完成
填入廠缺&註解
根據"料號欄"為依據,做排序
如何匯入EXCEL資料?
對應日期貼盤點資料
巨集陣列的程式
Norton Ghost 11以USB開機
收藏
分享
quickfixer
發短消息
加為好友
quickfixer
當前離線
UID
28599
帖子
154
主題
1
精華
0
積分
200
金錢
200
點名
1
作業系統
windwos 7
軟體版本
64bit
閱讀權限
20
在線時間
693 小時
註冊時間
2017-5-29
最後登錄
2025-1-1
中學生
帖子
154
主題
1
精華
0
積分
200
點名
1
作業系統
windwos 7
軟體版本
64bit
閱讀權限
20
註冊時間
2017-5-29
最後登錄
2025-1-1
2
#
發表於 2020-4-17 06:24
|
只看該作者
回復
1#
PJChen
隨便google就有一堆現成的解答了,這個列出活頁薄中所有的macro name
http://www.vbaexpress.com/kb/getarticle.php?kb_id=398
excel 2016可正常執行
TOP
quickfixer
發短消息
加為好友
quickfixer
當前離線
UID
28599
帖子
154
主題
1
精華
0
積分
200
金錢
200
點名
1
作業系統
windwos 7
軟體版本
64bit
閱讀權限
20
在線時間
693 小時
註冊時間
2017-5-29
最後登錄
2025-1-1
中學生
帖子
154
主題
1
精華
0
積分
200
點名
1
作業系統
windwos 7
軟體版本
64bit
閱讀權限
20
註冊時間
2017-5-29
最後登錄
2025-1-1
3
#
發表於 2020-4-17 06:47
|
只看該作者
回復
1#
PJChen
這個列出其它檔案的 macro name 含 module name
https://superuser.com/questions/1365898/macro-vba-code-to-list-and-print-names-and-code-of-all-macros-in-a-workbook
要userform、commandbutton、listbox
其中 objXLABC.Close 要改成objXLABC.Close False,不然程式會卡住
excel 2016可正常執行
TOP
准提部林
發短消息
加為好友
准提部林
當前離線
UID
13768
帖子
2842
主題
10
精華
0
積分
2898
金錢
2898
點名
0
作業系統
〔略〕
軟體版本
〔略〕
閱讀權限
100
性別
男
來自
〔略〕
在線時間
2115 小時
註冊時間
2013-5-13
最後登錄
2025-4-28
版主
帖子
2842
主題
10
精華
0
積分
2898
點名
0
作業系統
〔略〕
軟體版本
〔略〕
閱讀權限
100
性別
男
來自
〔略〕
註冊時間
2013-5-13
最後登錄
2025-4-28
4
#
發表於 2020-4-17 09:59
|
只看該作者
下載
(7.96 KB)
2020-4-17 09:59
TOP
PJChen
發短消息
加為好友
PJChen
(PJ)
當前離線
UID
6204
帖子
913
主題
150
精華
0
積分
1089
金錢
1089
點名
0
作業系統
win10
軟體版本
office 2019
閱讀權限
50
性別
女
在線時間
851 小時
註冊時間
2011-8-28
最後登錄
2023-7-19
暱稱:
PJ
大學生
帖子
913
主題
150
精華
0
積分
1089
點名
0
作業系統
win10
軟體版本
office 2019
閱讀權限
50
性別
女
註冊時間
2011-8-28
最後登錄
2023-7-19
5
#
發表於 2020-4-17 22:38
|
只看該作者
回復
4#
准提部林
回復
3#
quickfixer
二位好,
我把程式抓下來想測試,但卡住了,可以幫我看看嗎?
下載
(11.73 KB)
2020-4-17 22:38
Sub Command1_Click()
' Declare variables to access the Excel workbook.
Dim objXLApp As Excel.Application
Dim objXLWorkbooks As Excel.Workbooks
Dim objXLABC As Excel.Workbook
' Declare variables to access the macros in the workbook.
Dim objProject As VBIDE.VBProject
Dim objComponent As VBIDE.VBComponent
Dim objCode As VBIDE.CodeModule
' Declare other miscellaneous variables.
Dim iLine As Integer
Dim sProcName As String
Dim pk As vbext_ProcKind
' Open Excel, and open the workbook.
Set objXLApp = New Excel.Application
Set objXLWorkbooks = objXLApp.Workbooks
Set objXLABC = objXLWorkbooks.Open("C:\ABC.XLS")
' Empty the list box.
List1.Clear
' Get the project details in the workbook.
Set objProject = objXLABC.VBProject
' Iterate through each component in the project.
For Each objComponent In objProject.VBComponents
' Find the code module for the project.
Set objCode = objComponent.CodeModule
' Scan through the code module, looking for procedures.
iLine = 1
Do While iLine < objCode.CountOfLines
sProcName = objCode.ProcOfLine(iLine, pk)
If sProcName <> "" Then
' Found a procedure. Display its details, and then skip
' to the end of the procedure.
List1.AddItem objComponent.Name & vbTab & sProcName
iLine = iLine + objCode.ProcCountLines(sProcName, pk)
Else
' This line has no procedure, so go to the next line.
iLine = iLine + 1
End If
Loop
Set objCode = Nothing
Set objComponent = Nothing
Next
Set objProject = Nothing
' Clean up and exit.
objXLABC.Close
objXLApp.Quit
End Sub
複製代碼
TOP
quickfixer
發短消息
加為好友
quickfixer
當前離線
UID
28599
帖子
154
主題
1
精華
0
積分
200
金錢
200
點名
1
作業系統
windwos 7
軟體版本
64bit
閱讀權限
20
在線時間
693 小時
註冊時間
2017-5-29
最後登錄
2025-1-1
中學生
帖子
154
主題
1
精華
0
積分
200
點名
1
作業系統
windwos 7
軟體版本
64bit
閱讀權限
20
註冊時間
2017-5-29
最後登錄
2025-1-1
6
#
發表於 2020-4-18 00:06
|
只看該作者
本帖最後由 quickfixer 於 2020-4-18 00:14 編輯
回復
5#
PJChen
網址內的microsoft連結不是有說明?需先設定引用項目
Microsoft Visual Basic for Applications Extensibility 5.3
打勾
下載
(57.61 KB)
2020-4-18 00:05
第一個code 裡面也有說明要引用
下載
(67.98 KB)
2020-4-18 00:03
不然把第一個code裡面的這2行
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromGuid _
"{0002E157-0000-0000-C000-000000000046}", 5, 3
加到第二個code裡面最前面,可以改成用程式碼自動引用
TOP
n7822123
發短消息
加為好友
n7822123
(阿龍)
當前離線
UID
20045
帖子
406
主題
8
精華
0
積分
453
金錢
453
點名
0
作業系統
WINDOWS 7
軟體版本
2007
閱讀權限
20
性別
男
來自
台灣
在線時間
202 小時
註冊時間
2015-2-7
最後登錄
2021-7-31
暱稱:
阿龍
中學生
帖子
406
主題
8
精華
0
積分
453
點名
0
作業系統
WINDOWS 7
軟體版本
2007
閱讀權限
20
性別
男
來自
台灣
註冊時間
2015-2-7
最後登錄
2021-7-31
7
#
發表於 2020-5-18 20:58
|
只看該作者
本帖最後由 n7822123 於 2020-5-18 21:02 編輯
回復
1#
PJChen
了解VBE架構就不難寫........基本上你應該只想要用而已
所以我不多做解釋,想了解請按 "
F1
"
Sub 找巨集名稱()
Application.DisplayAlerts = False
[A1] = "活頁簿名稱"
[B1] = "模組名稱"
[C1] = "程序名稱"
R = 2
For Each wb In Workbooks
For Each VBC In wb.VBProject.VBComponents
Select Case VBC.Type
Case 1 '1=一般模組
LS = VBC.CodeModule.CountOfLines
'Debug.Print LS
LineStr = VBC.CodeModule.Lines(1, LS)
Lines = Split(LineStr, vbCrLf)
For Each Line In Lines
If Line Like "Sub*" Then
Cells(R, 1) = wb.Name
Cells(R, 2) = VBC.Name
Cells(R, 3) = Line
R = R + 1
End If
Next 'Line
Case Else
End Select
Next 'VBC
Next 'wb
Columns.AutoFit
End Sub
複製代碼
找巨集名稱.rar
(12.46 KB)
下載次數: 4
2020-5-18 20:58
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助
TOP
靜思自在 :
【為善競爭】人生要為善競爭,分秒必爭。
返回列表
下一主題
上一主題
C 與 C#
Excelㄧ般區
EXCEL專屬討論區
Excelㄧ般區
Excel程式區
進階應用專區
OFFICE 系列
Word
PowerPoint
Access
Office不分區
程式語言
VB 與 VB.Net
C 與 C#
Java 與 J#
程式設計不分區
資料庫
ORACLE
My SQL
MS SQL
網頁設計
ASP 與 ASP.NET
PHP
PHP+MySQL 入門實作
JavaScript
FLASH / ActionScript
HTM/ HTML/ CSS
網頁設計不分區
電腦與作業系統
電腦各種硬體討論
一般電腦軟體討論
論壇事務
管理公告
投訴反映
新手測試
愛 ‧ 生活
公益佈告欄
生活與感動
[收藏此主題]
[關注此主題的新回復]
[通過 QQ、MSN 分享給朋友]
申請友情鏈接
Facebook粉絲