Loop até o final do documento

2

Eu preciso selecionar cada terceira linha de um documento e formatar o texto em negrito, sublinhado e azul. Eu já tenho o código para isso, mas preciso fazer um loop por um determinado número de vezes.

O problema é que todos os tutoriais em loop que eu encontro usam variáveis ou estado para fazer isso até que alguma condição seja satisfeita. Como posso definir essa condição para "chegar ao final do documento?"

O código que eu configurei está abaixo, e as linhas entre colchetes são o que eu preciso de ajuda:

Selection.HomeKey Unit:=wdStory

[Do the following code until the end of the document]

        Selection.HomeKey Unit:=wdLine
        Selection.EndKey Unit:=wdLine, Extend:=wdExtend
        With Selection.Font
            .Bold = wdToggle
            .Color = 12611584
            .Underline = wdUnderlineSingle
        End With

        Selection.MoveDown Unit:=wdLine, Count:=3

[end of loop]

Questão muito básica. Eu estou familiarizado com a configuração desses tipos de loops no Excel, mas em palavras, não consigo descobrir. Eu aprecio qualquer um que tenha tempo para responder.

    
por Jamiho 17.03.2016 / 15:28

1 resposta

1

Isso deve funcionar

Dim lastRow As Long
lastRow = ActiveDocument.BuiltInDocumentProperties("Number Of Lines")
MsgBox lastRow

KB de BuiltInDocumentProperties

Então algo assim funcionaria e seria o mesmo tipo de for loop como excel -

Sub CountLines()

Dim lastRow As Long
Dim i As Long
lastRow = ActiveDocument.BuiltInDocumentProperties("Number Of Lines")
For i = 1 To lastRow
    If i Mod 3 = 0 Then
        'Do Stuff
    End If
Next

End Sub

Ou para ser mais completo -

Sub CountLines()

    Dim lastRow As Long
    Dim i As Long
    lastRow = ActiveDocument.BuiltInDocumentProperties("Number Of Lines")
    For i = 1 To lastRow
        If i Mod 3 = 0 Then
            ActiveDocument.Paragraphs(i).Range.Font.Bold = True
            'Do other stuff
        End If
    Next

End Sub
    
por 17.03.2016 / 16:11