все что связано с моей работой
Главная » Програмирование » Макрос VBA (MSWord) для форматирования искодного кода

Макрос VBA (MSWord) для форматирования искодного кода

Макрос форматирует исходный код вставленный в документ MS Word. Для чего это нужно? Например, дипломы и курсовые или статью для планшета-читалки прогнать…

Для начала создайте стиль с именем “Code” и оформите им весь исходный код в документе. Затем создайте стили:

  • CodeKeyword – ключевые слова;
  • CodeComment – коментарии;
  • CodeDirective – директивы компилятора

и после этого выполните макрос.

P.S. Здесь приведены ключевые слова для (Free) Pascal / Delphi.

Это первое более менее серьезное столкновение с VB, так что если что не так – сильно не пинайте…

Sub Code()
Dim s, keywords() As String
strKeywords = "and downto if or then Array else In Packed To Begin End Label procedure Type Case File Mod Program Until Const " & _
         "For Nil record Var Div Function Not Repeat While Do Goto Of Set With Absolute Destructor Inline Shl Uses Asm " & _
         "Implementation Interface Shr Virtual Constructor Inherited Object Unit Xor as exports initialization on " & _
         "threadvar class finalization is property try except finally library raise dispose exit false new true Abstract " & _
         "Constructor Inherited Object View destructor Is Property Virtual"
keywords = Split(strKeywords)

For Each s In keywords
  With ActiveDocument.Content.Find
      .Style = "Code"
      .MatchWholeWord = True
      .MatchCase = False
      .Format = True
      .Forward = True
      Do While .Execute(FindText:=s, Forward:=True, Format:=True) = True
          With .Parent
             .Style = "CodeKeyword"
          End With
      Loop
  End With
Next
With ActiveDocument.Content.Find
    .Style = "Code"
    .MatchWildcards = True
    .Format = True
    .Forward = True
    Do While .Execute(FindText:="\{*\}", Forward:=True, Format:=True) = True
        With .Parent
           .Style = "CodeComment"
        End With
    Loop
End With

With ActiveDocument.Content.Find
    .ClearFormatting
    .Style = "Code"
    .MatchWildcards = True
    .Format = True
    .Forward = True
    Do While .Execute(FindText:="\{$*\}", Forward:=True, Format:=True) = True
        With .Parent
           .Style = "CodeDirective"
        End With
    Loop
End With

End Sub

Комментариев нет

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.