Word 2010 VBA aplicando estilos, mas não alterando a fonte

3

Eu não uso o VBA com muita freqüência, e estou tentando montar uma macro que selecione todo o texto no documento com tamanho de fonte de 13,5 pt e mude seu estilo para o Cabeçalho 1. Até agora eu tenho o código abaixo:

Sub FormatSectionHeaders()
    Application.ScreenUpdating = False
    Dim oRng As Word.Range
    Set oRng = ActiveDocument.Content
    oRng.Find.ClearFormatting
    oRng.Find.Replacement.ClearFormatting
    oRng.Find.Replacement.Style = wdStyleHeading1
    With oRng.Find
     .Font.Size = 13.5
     .Text = ""
     .Execute Format:=True, Replace:=wdReplaceAll, Wrap:=wdFindContinue
    End With
End Sub

Isso seleciona o texto correto e aplica o estilo, mas, por algum motivo, não está substituindo toda a formatação original - a fonte e o tamanho da fonte, por exemplo, não são alterados para corresponder aos do estilo. Alguém pode me dizer o que estou fazendo errado?

Nota: Eu posso fazer isso funcionar com o seguinte loop, mas isso é muito mais lento do que usar o substiteall, então eu gostaria de tentar corrigir o código acima, em vez de usar algo assim.

With oRng.Find
    .ClearFormatting
    .Text = ""
    .Font.Size = 13.5
    While .Execute
        oRng.Style = ActiveDocument.Styles(wdStyleHeading1)
        oRng.Collapse wdCollapseEnd
    Wend
End With
    
por Lobo 10.02.2015 / 13:01

2 respostas

1

Parece que isso e outros problemas que eu estava experimentando com o código VBA se deviam ao fato de que o texto que estava sendo alterado estava dentro de uma célula de uma tabela grande (invisível). Ao transferir o texto apenas para outro documento, os problemas foram resolvidos. Veja os comentários de uma maneira de forçar o estilo a entrar em vigor, mesmo dentro da célula.

    
por 12.02.2015 / 16:54
0

Você está encontrando o conteúdo com tamanho de fonte de 13,5 e tentando aplicar o estilo heading1 para esse conteúdo. mas no modelo padrão do documento Word (Normal) Ele tem o primeiro estilo de cabeçalho de nível como Título1 para que você possa usar o código como abaixo

oRng.style="Título1"

    
por 10.09.2015 / 09:19