Como contar instâncias um certo estilo foi aplicado via VBA?

0

No Word, pode-se clicar no menu suspenso de um estilo na janela de estilo e mostrar com que frequência esse estilo foi aplicado em todo o documento ativo. Então esta é uma informação que está prontamente disponível.

Existe alguma maneira de obter essa informação via VBA?

Marcel
fonte

Respostas:

2

Você não especificou exatamente como você queria usá-lo, mas isso deve começar. Encontrei isso no TechArchive.net - Contagem de instâncias de estilo . Estes são dois subs do VBA que, com pequenas modificações, você pode contar o estilo que você procura.

Sub CountStyle()
Dim l As Long
ResetSearch
With ActiveDocument.Range.Find
   .Style = "Strong" 'Replace with the name of the style you are counting
   While .Execute
      l = l + 1
      If l > ActiveDocument.Range.Paragraphs.Count Then
         Stop
      End If
   Wend
End With
MsgBox l
ResetSearch
End Sub

Public Sub ResetSearch()
With Selection.Find
   .ClearFormatting
   .Replacement.ClearFormatting
   .Text = ""
   .Replacement.Text = ""
   .Forward = True
   .Wrap = wdFindContinue
   .Format = False
   .MatchCase = False
   .MatchWholeWord = False
   .MatchWildcards = False
   .MatchSoundsLike = False
   .MatchAllWordForms = False
   ' plus some more if needed
   .Execute
End With
End Sub

Não tenho certeza de qual versão você está usando, mas isso funcionou com o Word 2010.

CharlieRB
fonte
Oi Luke, obrigado pela sua resposta. Eu estou usando o WinWord 2007. Meu projeto é ler os estilos e seus atributos em uma tabela do Excel, alterá-los lá, se necessário, e escrevê-los de volta. Ele funciona muito bem, o único problema foi, para excluir estilos não utilizados, porque não consegui determinar a partir do VBA se eles estão realmente em uso. Por fim, escrevi uma rotina que percorre todos os intervalos da história, mas faz com que a macro inteira seja executada por meia hora. - Se eu usar sua busca e substituir sugestão, o que me diz quantas ocorrências foram substituídas? - Marcel
Marcel
Eu não sou o Luke. Esta não é uma sugestão de encontrar e substituir. A parte de localização e substituição que você está vendo é parte do VBA que redefine a pesquisa para estar pronto para sua próxima execução.
CharlieRB
Obrigado CharlieRB. Eu comentei o código antes de ter entendido completamente - nunca uma boa ideia.
Marcel