Tôi đặc biệt quan tâm tới chủ đề này.
Liên quan tới Module, trên diễn đàn đã có một topic:
Trong khuôn khổ bài viết này, tôi tham vọng muốn tạo ra chương trình để viết khái quát lại toàn bộ chương trình trong một project.
Tuy nhiên vấn đề đầu tiên tôi vấp phải, đó là làm sao có thể đọc được nội dung code của file Excel. Thực hiện google tôi có được đoạn code sau:
Nguồn:
Bạn chú ý thiết định Microsoft Visual Basic for Applications Extensibility 5.3:
Tôi đã thử chương trình trên, và thật đáng kinh ngạc, nó lấy được toàn bộ code của UserForm, sheet, Module.
Tạm thời thế đã. Bài sau sẽ viết tiếp.
Liên quan tới Module, trên diễn đàn đã có một topic:
Bạn cần đăng nhập để thấy link
Trong khuôn khổ bài viết này, tôi tham vọng muốn tạo ra chương trình để viết khái quát lại toàn bộ chương trình trong một project.
Tuy nhiên vấn đề đầu tiên tôi vấp phải, đó là làm sao có thể đọc được nội dung code của file Excel. Thực hiện google tôi có được đoạn code sau:
Mã:
Sub TestGetVBAProjString()
'run this
'assumes VBA code is not locked
Dim sStr As String, nComps As Integer
Dim vA As Variant, nTLines As Long
'get whole string
sStr = GetVBAProjString
'show start of project string
ThisWorkbook.Sheets(1).Cells(1, 1) = sStr
' MsgBox sStr
End Sub
Function GetVBAProjString() As String
'gets ThisWorkbook's whole VBA project string
'Set reference to Microsoft VBA Extensibility 5.5
Dim VBProj As VBIDE.VBProject, VBComp As VBIDE.VBComponent
Dim VBMod As VBIDE.CodeModule, sMod As String, sProj As String
Dim nLines As Long
'get ref to ThisWorkbook project
Set VBProj = ThisWorkbook.VBProject
'loop through VBComponents collection
For Each VBComp In VBProj.VBComponents
Set VBMod = VBComp.CodeModule
nLines = VBMod.CountOfLines
If nLines <> 0 Then
sMod = VBMod.Lines(1, nLines)
sProj = sProj & vbCrLf & _
UCase(Chr(39) & VBComp.Name) & _
vbCrLf & vbCrLf & sMod
Else 'just accum name of empty component
sProj = sProj & vbCrLf & _
UCase(Chr(39) & VBComp.Name) & _
vbCrLf & vbCrLf
End If
Next VBComp
GetVBAProjString = sProj
Set VBProj = Nothing: Set VBComp = Nothing
Set VBMod = Nothing
End Function
Bạn cần đăng nhập để thấy link
Bạn chú ý thiết định Microsoft Visual Basic for Applications Extensibility 5.3:
Bạn cần đăng nhập để thấy đính kèm
Tôi đã thử chương trình trên, và thật đáng kinh ngạc, nó lấy được toàn bộ code của UserForm, sheet, Module.
Tạm thời thế đã. Bài sau sẽ viết tiếp.