H o l a:
El editor de VBA pone en automático los colores según las "palabras reservadas" que tiene definidas, por lo que observo son algunas palabras las que pone de color azul y lo que tienes como comentario lo pone en color verde.
Entonces he diseñado algo para poner todo el código de VBA en una hoja de excel, respetando las sangrías y el color verde; en cuanto a las palabras reservadas, estoy poniendo en una lista las palabras más utilizadas.
Una vez en excel los códigos, los puedes copiar y pegar en excel y te respetará los formatos.
Sub ExportarModulos()
'Por.Dante Amor
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'
Set h1 = Sheets("Hoja5")
h1.Cells.Clear
With Application.VBE.ActiveVBProject
For i = 1 To .VBComponents.Count
fname = ThisWorkbook.Path & "\" & "modulo.txt"
Select Case Left(.VBComponents(i).Name, 6)
Case "Módulo", "UserFo"
.VBComponents(i).Export Filename:=fname
Workbooks.OpenText Filename:=fname, _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, _
TextQualifier:=xlNone, ConsecutiveDelimiter:=False, _
Tab:=False, Semicolon:=False, Comma:=False, Space:=False, _
Other:=False, FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row).Copy _
h1.Range("A" & h1.Range("A" & Rows.Count).End(xlUp).Row + 2)
ActiveWorkbook.Close False
End Select
Next
End With
'
palabras = Array("For", "Next", "Do", "Loop", "While", "GoTo", _
"If", "End", "Then", "Else", "True", "False", "Sub", "Function", "To", _
"With", "Call", "Set", "Get", "Each", "Dim", "As", "String", _
"Select", "Case", "CStr", "Until", "Step", "LBound", "UBound", _
"Debug", "Print", "Private", "Integer", "Boolean", "Long", "On", _
"Error", "Resume")
For i = 1 To h1.Range("A" & Rows.Count).End(xlUp).Row
tiene = InStr(1, h1.Cells(i, "A"), "'")
If tiene > 0 Then
h1.Cells(i, "A").Characters(Start:=tiene, _
Length:=Len(h1.Cells(i, "A"))).Font.ColorIndex = 10
Else
For j = LBound(palabras) To UBound(palabras)
tiene = InStr(1, h1.Cells(i, "A"), palabras(j))
If tiene > 0 Then
h1.Cells(i, "A").Characters(Start:=tiene, _
Length:=Len(palabras(j))).Font.ColorIndex = 32
End If
Next
End If
Next
'
Application.ScreenUpdating = True
MsgBox "Terminado"
End Sub
Antes de ejecutar la macro revisa que tengas la referencia:
Microsoft Visual Basic For Applications Extensibility 5.3
Entra al menú de VBA, Herramientas, Referencias:
También tienes que tener activa la opción "Confiar en el acceso al modelo de objetos de proyectos de VBA"; para ello entra Opciones de excel, Centro de confianza, Configuración del centro de confianza, Configuración de macros, Activa la casilla, Aceptar.
:)
;)