Liệt kê toàn bộ tên code vào một trang tính

Liên hệ QC

hoanglocphat

Thành viên thường trực
Tham gia
27/1/13
Bài viết
258
Được thích
30
Tôi đang muốn liệt kê toàn bộ tên code ở tất cả các module của 1 file vào 1 trang tính được chỉ định trước
Nếu liệt kê thêm các hàm tự tạo hoặc code ở trong các trang tính thì càng hay
P/s: tôi bấm Alt +F8 thì chỉ được coi, kg được chọn tất cả & copy gì hết
Cảm ơn các bạn
 
Tôi đang muốn liệt kê toàn bộ tên code ở tất cả các module của 1 file vào 1 trang tính được chỉ định trước
Nếu liệt kê thêm các hàm tự tạo hoặc code ở trong các trang tính thì càng hay
P/s: tôi bấm Alt +F8 thì chỉ được coi, kg được chọn tất cả & copy gì hết
Cảm ơn các bạn
Mục đích của bạn là gì vậy?
 
Upvote 0
Tôi đang muốn liệt kê toàn bộ tên code ở tất cả các module của 1 file vào 1 trang tính được chỉ định trước
Nếu liệt kê thêm các hàm tự tạo hoặc code ở trong các trang tính thì càng hay
P/s: tôi bấm Alt +F8 thì chỉ được coi, kg được chọn tất cả & copy gì hết
Cảm ơn các bạn
Khẳng định rằng bài này làm được (dễ nữa là đằng khác)
Tuy nhiên, heo chỗ màu đỏ... nếu đã lỡ viết thì thôi ta liệt kê luôn toàn bộ tên các Sub, Function.. hiện có trong toàn bộ các sheet, các module, Class Module, các UserForms luôn cho nó sung
Ẹc... Ẹc...
Bài này cũng vui đây! Để xem các đại ca "tung hoành" thế nào
 
Upvote 0
Khẳng định rằng bài này làm được (dễ nữa là đằng khác)
Tuy nhiên, heo chỗ màu đỏ... nếu đã lỡ viết thì thôi ta liệt kê luôn toàn bộ tên các Sub, Function.. hiện có trong toàn bộ các sheet, các module, Class Module, các UserForms luôn cho nó sung
Ẹc... Ẹc...
Bài này cũng vui đây! Để xem các đại ca "tung hoành" thế nào
Vụ này hay đây Em phải đánh đấu bài để ngồi coi thôi ...... chứ Mằm là Tịt --=0--=0
 
Upvote 0
Khẳng định rằng bài này làm được (dễ nữa là đằng khác)
Tuy nhiên, heo chỗ màu đỏ... nếu đã lỡ viết thì thôi ta liệt kê luôn toàn bộ tên các Sub, Function.. hiện có trong toàn bộ các sheet, các module, Class Module, các UserForms luôn cho nó sung
Ẹc... Ẹc...
Bài này cũng vui đây! Để xem các đại ca "tung hoành" thế nào
Nếu liệt kê nằm ở Module hay sheet nào thì càng tuyệt
 
Upvote 0
Khẳng định rằng bài này làm được (dễ nữa là đằng khác)
Tuy nhiên, heo chỗ màu đỏ... nếu đã lỡ viết thì thôi ta liệt kê luôn toàn bộ tên các Sub, Function.. hiện có trong toàn bộ các sheet, các module, Class Module, các UserForms luôn cho nó sung
Ẹc... Ẹc...
Bài này cũng vui đây! Để xem các đại ca "tung hoành" thế nào

E mày mò nãy giờ. Có gì anh chỉ bảo nha anh !

Mã:
Sub LietKe()
Dim DSach(), Ten As String
Dim i As Long, BD As Long, k As Long


For i = 1 To ThisWorkbook.VBProject.VBComponents.Count
    
    With ThisWorkbook.VBProject.VBComponents(i)
        Ten = .Name         'Ten CodeName
        If .Type = 2 Then Ten = "Class " & Ten      'Thuoc loai Class
        If .Type = 1 Then Ten = "Module " & Ten     'Thuoc loai module
        If .Type = 3 Then Ten = "Form " & Ten       'Thuoc loai Form
        If .Type = 100 Then Ten = "Sheet " & Ten    'Thuoc loai Sheet
        With .CodeModule
            BD = .CountOfDeclarationLines + 1
            Do Until BD > .CountOfLines
                k = k + 1
                ReDim Preserve DSach(1 To k)
                DSach(k) = Ten & ": " & .ProcOfLine(BD, vbext_pk_Proc)
                BD = BD + .ProcCountLines(.ProcOfLine(BD, vbext_pk_Proc), vbext_pk_Proc)
            Loop
        End With
    End With
Next i

Sheet2.Range("A1").Resize(k, 1).Value = WorksheetFunction.Transpose(DSach)

End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
rồi giờ làm sao biết .ProcOfLine vừa tìm được nó là Sub hay là Function (nếu là Function thì as ?) hay là Property Get Set
rồi làm sao lấy các hàm API như là

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

đây ta ? hihi
 
Upvote 0
rồi giờ làm sao biết .ProcOfLine vừa tìm được nó là Sub hay là Function (nếu là Function thì as ?) hay là Property Get Set
rồi làm sao lấy các hàm API như là

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

đây ta ? hihi

Cái này +-+-+-++-+-+-+ . Đề e mò tiếp xem sao !
 
Upvote 0
Nếu liệt kê nằm ở Module hay sheet nào thì càng tuyệt

Không gì là không thể!
1> Code liệt kê toàn bộ các thủ tục trong 1 module nào đó:
Mã:
Function ListProcedures(ByVal ModuleName As String)
  Dim line As Long, i As Long
  Dim arr()
  Dim procName As String
  With ActiveWorkbook.VBProject.VBComponents(ModuleName).CodeModule
    line = .CountOfDeclarationLines + 1
    Do Until line >= .CountOfLines
      procName = .ProcOfLine(line, 0)
      ReDim Preserve arr(i)
      arr(i) = procName
      i = i + 1
      line = .ProcStartLine(procName, 0) + .ProcCountLines(procName, 0) + 1
    Loop
  End With
  ListProcedures = arr
End Function
Áp dụng: Có thể gõ trên bảng tính hoặc áp dụng trong môi trường VBA đều được. Ví dụ:
- Liệt kê các thủ tục trong "Module1"
Mã:
=ListProcedures("Module1")
- Liệt kê các thủ tục trong "Sheet1"
Mã:
=ListProcedures("Sheet1")
* Lưu ý: Sheet1 ở đây là Sheet CodeName
2> Code liệt kê tên các Module có trong 1 Workbook nào đó:
Mã:
Function ListModules(Optional ByVal wkb As Workbook)
  Dim n As Long, lCount As Long
  If wkb Is Nothing Then Set wkb = ThisWorkbook
  lCount = wkb.VBProject.VBComponents.Count
  ReDim arr(1 To lCount)
  For n = 1 To lCount
    arr(n) = wkb.VBProject.VBComponents(n).Name
  Next
  ListModules = arr
End Function
Ví dụ áp dụng:
Mã:
Sub Main()
  MsgBox Join(ListModules, vbLf)
End Sub
* Lưu ý: Nếu không chỉ ra 1 workbook cụ thể nào thì ngầm định là đang nói đến Thisworkbook
----------------------------------------
Có code liệt kê các tên Module, có code liệt kê các thủ tục trong 1 module cụ thể... Vậy tùy biến thế nào là chuyện của bạn nha
----------------------------------------
rồi làm sao lấy các hàm API như là

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long

đây ta ? hihi
Cá rằng mấy cái "quỷ" này chẳng ai cần liệt kê ra để làm gì cả
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Không gì là không thể!
1> Code liệt kê toàn bộ các thủ tục trong 1 module nào đó:
Mã:
Function ListProcedures(ByVal ModuleName As String)
  Dim line As Long, i As Long
  Dim arr()
  Dim procName As String
  With ActiveWorkbook.VBProject.VBComponents(ModuleName).CodeModule
    line = .CountOfDeclarationLines + 1
    Do Until line >= .CountOfLines
      procName = .ProcOfLine(line, 0)
      ReDim Preserve arr(i)
      arr(i) = procName
      i = i + 1
      line = .ProcStartLine(procName, 0) + .ProcCountLines(procName, 0) + 1
    Loop
  End With
  ListProcedures = arr
End Function
Áp dụng: Có thể gõ trên bảng tính hoặc áp dụng trong môi trường VBA đều được. Ví dụ:
- Liệt kê các thủ tục trong "Module1"
Mã:
=ListProcedures("Module1")
- Liệt kê các thủ tục trong "Sheet1"
Mã:
=ListProcedures("Sheet1")
* Lưu ý: Sheet1 ở đây là Sheet CodeName
2> Code liệt kê tên các Module có trong 1 Workbook nào đó:
Mã:
Function ListModules(Optional ByVal wkb As Workbook)
  Dim n As Long, lCount As Long
  If wkb Is Nothing Then Set wkb = ThisWorkbook
  lCount = wkb.VBProject.VBComponents.Count
  ReDim arr(1 To lCount)
  For n = 1 To lCount
    arr(n) = wkb.VBProject.VBComponents(n).Name
  Next
  ListModules = arr
End Function
Ví dụ áp dụng:
Mã:
Sub Main()
  MsgBox Join(ListModules, vbLf)
End Sub
* Lưu ý: Nếu không chỉ ra 1 workbook cụ thể nào thì ngầm định là đang nói đến Thisworkbook
----------------------------------------
Có code liệt kê các tên Module, có code liệt kê các thủ tục trong 1 module cụ thể... Vậy tùy biến thế nào là chuyện của bạn nha
----------------------------------------
Khi tải file về, nhấp vào công thức thì bị Value hết
Anh xem File đính kèm
 

File đính kèm

Upvote 0
Khi tải file về, nhấp vào công thức thì bị Value hết
Anh xem File đính kèm

Liên quan đến việc truy cập vào môi trường VBA ta phải check mục "Trust access to the VBA project object model" trong Excel Options (cái này tưởng bạn đã biết rồi chứ)
 
Upvote 0
Có ai là thấy cái Add-Ins này chưa nhỉ :p :D
Video_2019-12-11_170621.gif
 
Upvote 0
Có nhìn thấy tên Add_Ins này ở video.
qua link sau nha ... nó đấy
 
Upvote 0
qua link sau nha ... nó đấy

Cảm ơn Bác nhá!
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom