Aqui está uma rotina VBA que fará o que você descreve:
Sub Alternate_case()
Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "^$"
.Forward = True
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While True
.Execute Wrap:=wdFindStop
If Not .Found Then Exit Do
Selection.Range.Case = wdUpperCase
.Execute Wrap:=wdFindStop
If Not .Found Then Exit Do
Selection.Range.Case = wdLowerCase
Loop
End With
End Sub
A declaração Selection.HomeKey
é equivalente
para Ctrl + Página inicial ;
Salta para o início do documento.
Exclua se você quiser começar onde quer que esteja
quando você invoca a rotina.
As próximas dúzias de linhas configuram uma distinção entre maiúsculas e minúsculas, não curinga
encaminhar pesquisa por uma letra ( Text = "^$"
).
(Você pode conseguir excluir as linhas ….ClearFormatting
e as linhas … = False
,
como estes apenas estabelecem explicitamente os parâmetros padrão.)
O bloco Do While True
é um "loop infinito"
que pára depois de encontrar a última letra no documento.
Executa a pesquisa configurada (por uma carta)
sem envolver o início do documento ( Wrap:=wdFindStop
);
se falhar ( Not .Found
), terminará o loop ( Exit Do
),
caso contrário, prossegue para capitalizar a letra selecionada e pesquisar novamente.
Na próxima pesquisa, se for bem-sucedida, a letra será colocada em minúscula,
e assim por diante.
Veja Como adiciono o VBA no MS Office? para obter informações gerais sobre como usar o VBA no Microsoft Word (e Excel, etc.)