|
Sub RunMe()
Call fnPrettyPrint("C:\Users\david\Desktop\a.txt")
End Sub
Public Function fnPrettyPrint(sFilename As String)
' Avoid reserved words in your labels eg Next_Line
Dim sOutFilename As String
sOutFilename = Mid(sFilename, 1, Len(sFilename) - 4) & ".ppp"
Dim i As Long
Dim sInputLine As String
Dim bContinuation As Boolean
sInputLine = ""
Open sFilename For Input As #10
Open sOutFilename For Output As #11
Do Until EOF(10)
Line Input #10, sInputLine
If Trim(sInputLine) = "" Then
GoTo Label_Next_Line
End If
If Mid(Trim(sInputLine), Len(Trim(sInputLine)), 1) = "_" Then
If bContinuation = True Then
Print #11, Spc(i + 4); Trim(sInputLine)
GoTo Label_Next_Line
End If
If bContinuation = False Then
Print #11, Spc(1)
Print #11, Spc(i); Trim(sInputLine)
bContinuation = True
GoTo Label_Next_Line
End If
End If
If Mid(Trim(sInputLine), Len(Trim(sInputLine)), 1) <> "_" Then
If bContinuation = True Then
Print #11, Spc(i + 4); Trim(sInputLine)
Print #11, Spc(1)
bContinuation = False
GoTo Label_Next_Line
End If
End If
If InStr(1, Trim(sInputLine), "Select Case") = 1 Then
Print #11, Spc(i); Trim(sInputLine)
i = i + 4
GoTo Label_Next_Line
End If
If InStr(1, Trim(sInputLine), "End Select") = 1 Then
i = i - 4
Print #11, Spc(i); Trim(sInputLine)
GoTo Label_Next_Line
End If
If InStr(1, Trim(sInputLine), "Case") = 1 Then
Print #11, Spc(i - 4); Trim(sInputLine)
GoTo Label_Next_Line
End If
If InStr(1, Trim(sInputLine), "For Each") = 1 Then
Print #11, Spc(i); Trim(sInputLine)
i = i + 4
GoTo Label_Next_Line
End If
If InStr(1, Trim(sInputLine), "Next") = 1 Then
i = i - 4
Print #11, Spc(i); Trim(sInputLine)
GoTo Label_Next_Line
End If
If InStr(1, Trim(sInputLine), "Public Sub") = 1 Then
Print #11, Spc(1)
Print #11, Trim(sInputLine)
i = 4
GoTo Label_Next_Line
End If
If InStr(1, Trim(sInputLine), "Private Sub") = 1 Then
Print #11, Spc(1)
Print #11, Trim(sInputLine)
i = 4
GoTo Label_Next_Line
End If
If InStr(1, Trim(sInputLine), "Sub") = 1 Then
Print #11, Spc(1)
Print #11, Trim(sInputLine)
i = 4
GoTo Label_Next_Line
End If
If InStr(1, Trim(sInputLine), "End Sub") = 1 Then
Print #11, Trim(sInputLine)
Print #11, Spc(1)
i = 0
GoTo Label_Next_Line
End If
If InStr(1, Trim(sInputLine), "Public Function") = 1 Then
Print #11, Spc(1)
Print #11, Trim(sInputLine)
i = 4
GoTo Label_Next_Line
End If
If InStr(1, Trim(sInputLine), "End Function") = 1 Then
Print #11, Trim(sInputLine)
Print #11, Spc(1)
i = 0
GoTo Label_Next_Line
End If
If InStr(1, Trim(sInputLine), "Do Until") = 1 Then
Print #11, Spc(i); Trim(sInputLine)
i = i + 4
GoTo Label_Next_Line
End If
If InStr(1, Trim(sInputLine), "Loop") = 1 Then
i = i - 4
Print #11, Spc(i); Trim(sInputLine)
GoTo Label_Next_Line
End If
If InStr(1, Trim(sInputLine), "With") = 1 Then
Print #11, Spc(i); Trim(sInputLine)
i = i + 4
GoTo Label_Next_Line
End If
If InStr(1, Trim(sInputLine), "End With") = 1 Then
i = i - 4
Print #11, Spc(i); Trim(sInputLine)
GoTo Label_Next_Line
End If
If InStr(1, Trim(sInputLine), "If") = 1 Then
If Mid(Trim(sInputLine), Len(Trim(sInputLine)) - 3, 4) = "Then" Then
Print #11, Spc(i); Trim(sInputLine)
i = i + 4
GoTo Label_Next_Line
End If
End If
If InStr(1, Trim(sInputLine), "End If") = 1 Then
i = i - 4
Print #11, Spc(i); Trim(sInputLine)
GoTo Label_Next_Line
End If
If InStr(1, Trim(sInputLine), "Else") = 1 Then
Print #11, Spc(i - 4); Trim(sInputLine)
GoTo Label_Next_Line
End If
If Mid(Trim(sInputLine), Len(Trim(sInputLine)), 1) = ":" Then
Print #11, Trim(sInputLine)
GoTo Label_Next_Line
End If
Print #11, Spc(i); Trim(sInputLine)
Label_Next_Line:
Loop
fnPrettyPrint_Exit_Routine:
Close #10
Close #11
Exit Function
End Function
|
|