Chúng ta muốn phân tích code bằng VBA, nếu có thể thì liệt kê kết quả thật dễ hiểu, dễ nhìn.
Để phân tích code bằng VBA, hiện tại không có công thức Excel nào có thể làm được việc này. Tuy nhiên, bằng chính code VBA, chúng ta có thể thực hiện được điều này.
Hiện tại trên diễn đàn, đã có một chủ đề liên quan tới vấn đề này, đó là
Để nhìn lại công sức code, đánh giá thành quả, thì chúng ta cần một bản tổng hợp dễ hiểu, dễ nhìn, và có thật đầy đủ số lượng dòng code, thuộc Module nào...
Và hôm nay tôi giới thiệu với các bạn điều này.
Cách suy nghĩ khi lựa chọn Tool phân tích code bằng VBA.
Dù nói là phân tích code, nhưng quả thật phương pháp phân tích thì có nhiều. Như tôi đã nói ở trên, chúng ta đã có một phương pháp phân tích Tree View Code.
Đó cũng là một trong những cách nghĩ khi phân tích code.
Sau đây, tôi trình bày một số lý do khi phân tích code:
Với các chương trình nhỏ, thì một người có thể hoàn thành Tool. Tuy nhiên, đối với một dự án quy mô, thì trường hợp một người làm Tool là rất hiếm. Thường là chia ra mỗi người sẽ đảm nhiệm một chức năng nào đó của Tool, trường hợp này là phổ biến hơn cả.
Vì vậy, nếu như điều tra biết rõ được, code như thế nào, được viết ở đâu (Module nào), thì đó là điều rất tiện lợi, hữu ích để mọi người tham khảo.
Điều này rất thuận tiện để quản lý các version của Tool. Tóm lại, mỗi người có cách sử dụng kết quả phân tích vào các mục đích khác nhau, tuy nhiên thông thường nhất là để thuận tiện quản lý các version của Tool.
Làm thế nào để liệt kê thông tin dễ nhìn và dễ hiểu, dễ hình dung quy mô của dự án.
Hãy nhớ lại khi chúng ta lần mò lại code do chính mình viết ra cách đây vài tháng. Điều chúng ta muốn biết là tên Module, tên thủ tục,...
Vì vậy, ở đây, chúng ta sẽ đề xuất liệt kê các thông tin sau: Tên Module, tên thủ tục, số lượng dòng code.
Hình ảnh trước khi chạy chương trình sẽ như thế này:
Kết quả chạy code mong muốn như thế này:
Code mẫu:
Tham khảo từ:
Để phân tích code bằng VBA, hiện tại không có công thức Excel nào có thể làm được việc này. Tuy nhiên, bằng chính code VBA, chúng ta có thể thực hiện được điều này.
Hiện tại trên diễn đàn, đã có một chủ đề liên quan tới vấn đề này, đó là
Bạn cần đăng nhập để thấy link
. Tool này phân tích mang tính logic, bên trong một thủ tục, thì có những thủ tục nào được gọi. Điều này là có ý nghĩa với người code.Để nhìn lại công sức code, đánh giá thành quả, thì chúng ta cần một bản tổng hợp dễ hiểu, dễ nhìn, và có thật đầy đủ số lượng dòng code, thuộc Module nào...
Và hôm nay tôi giới thiệu với các bạn điều này.
Cách suy nghĩ khi lựa chọn Tool phân tích code bằng VBA.
Dù nói là phân tích code, nhưng quả thật phương pháp phân tích thì có nhiều. Như tôi đã nói ở trên, chúng ta đã có một phương pháp phân tích Tree View Code.
Đó cũng là một trong những cách nghĩ khi phân tích code.
Sau đây, tôi trình bày một số lý do khi phân tích code:
Cách sử dụng kết quả phân tích code.Trong quá trình phát triển Tool, chúng ta muốn so sánh sự khác nhau giữa phiên bản trước và phiên bản hiện tại.
Với các chương trình nhỏ, thì một người có thể hoàn thành Tool. Tuy nhiên, đối với một dự án quy mô, thì trường hợp một người làm Tool là rất hiếm. Thường là chia ra mỗi người sẽ đảm nhiệm một chức năng nào đó của Tool, trường hợp này là phổ biến hơn cả.
Vì vậy, nếu như điều tra biết rõ được, code như thế nào, được viết ở đâu (Module nào), thì đó là điều rất tiện lợi, hữu ích để mọi người tham khảo.
Điều này rất thuận tiện để quản lý các version của Tool. Tóm lại, mỗi người có cách sử dụng kết quả phân tích vào các mục đích khác nhau, tuy nhiên thông thường nhất là để thuận tiện quản lý các version của Tool.
Làm thế nào để liệt kê thông tin dễ nhìn và dễ hiểu, dễ hình dung quy mô của dự án.
Hãy nhớ lại khi chúng ta lần mò lại code do chính mình viết ra cách đây vài tháng. Điều chúng ta muốn biết là tên Module, tên thủ tục,...
Vì vậy, ở đây, chúng ta sẽ đề xuất liệt kê các thông tin sau: Tên Module, tên thủ tục, số lượng dòng code.
Hình ảnh trước khi chạy chương trình sẽ như thế này:
Bạn cần đăng nhập để thấy đính kèm
Kết quả chạy code mong muốn như thế này:
Bạn cần đăng nhập để thấy đính kèm
Code mẫu:
Mã:
Sub phantichcode()
'Khai bao bien so
Dim intWriteRow As Long 'Dong ghi du lieu
Dim intMdlTotalNum As Long 'So luong Module
Dim intProTotalNum As Long 'So luong sub/function
Dim intCodeTotalNum As Long 'Tong So luong dong code
Dim strMdlName As String 'Module Name
Dim strProName As String 'Sub/Function Name
Dim intCodeNum As Long 'So dong code
Dim intRowCount As Long 'So dong data
'①Lay so luong Module
Dim intMdlNum As Integer 'So luong Module
intMdlTotalNum = ActiveWorkbook.VBProject.VBComponents.Count
'②Vong lap xu ly lan luot cac Module
Dim i As Long, j As Long
intProTotalNum = 0
intCodeTotalNum = 0
intRowCount = 1
intWriteRow = 9
For i = 1 To intMdlTotalNum
With ActiveWorkbook.VBProject.VBComponents(i)
'③Ten Module
strMdlName = .Name
With .CodeModule
'Vong lap xu ly lan luot tung thu tuc
For j = 1 To .CountOfLines
If strProName <> .ProcOfLine(j, 0) Then
'④Ten Sub/Function, so dong code
strProName = .ProcOfLine(j, 0)
intCodeNum = .ProcCountLines(strProName, 0)
'⑤Ghi No., Module Name, Sub/Function Name, so dong code vao bang thong tin chi tiet
With Worksheets("ALL")
.Cells(intWriteRow, 2).Value = intRowCount 'No
.Cells(intWriteRow, 3).Value = strMdlName 'Module Name
.Cells(intWriteRow, 4).Value = strProName 'Sub/Function Name
.Cells(intWriteRow, 5).Value = intCodeNum 'So dong code
End With
'Tong so Sub/Function, Tong so dong code
intProTotalNum = intProTotalNum + 1
intCodeTotalNum = intCodeTotalNum + intCodeNum
'Dong ghi du lieu tang len 1
intWriteRow = intWriteRow + 1
'No. tang len 1
intRowCount = intRowCount + 1
End If
Next j
'Gan Sub/Function Name = "" de sang vong lap tiep theo
strProName = ""
End With
End With
Next i
'⑥Ghi du lieu tong hop
Worksheets("ALL").Cells(3, 3).Value = intMdlTotalNum
Worksheets("ALL").Cells(4, 3).Value = intProTotalNum
Worksheets("ALL").Cells(5, 3).Value = intCodeTotalNum
End Sub
Bạn cần đăng nhập để thấy link