Word VBA: Existe uma maneira de inserir uma variável em uma macro de pesquisa e substituição?

0

Então, o que eu gostaria de fazer é que a macro encontre o número de páginas no documento por meio de:

pages.count

Até onde eu sei, não é possível usar o método de pesquisa e substituição, pois não posso inserir uma variável no

replacement.text

Outro método que tentei é simplesmente encontrar primeiro a localização da parte do texto que deve ser substituída, selecioná-la e depois usar o

Selection.TypeText Text:=Pages.Count

mas isso resulta em um erro exigido pelo objeto. Então isso também não funciona. Como tal, estou meio fora de ideias que método usar para substituir o texto.

Alguém poderia ter uma idéia de como abordar esta questão?

    
por Noir 07.07.2018 / 21:37

2 respostas

0

Eu não quero parecer esotérico, mas na verdade não existe algo como "Página" real no Microsoft Word. Desde que o Microsoft Word é um programa de processamento de texto e não um programa de layout de página, o Microsoft Word depende dinamicamente de muitos fatores para determinar o que se encaixa em uma página impressa. Alguns deles incluem fonte, tamanho do ponto, espaçamento, configurações de margem, tipo de página, orientação da página, configurações do driver de impressão e muito mais.

Por causa disso, forçar algo inserido em um número de página fixo não é algo que pode ou deve ser feito ... e não saber mais sobre o que exatamente você está tentando realizar limita todos nós a meras especulações.

Por favor, descreva totalmente o que você está tentando fazer.

    
por 08.07.2018 / 03:50
0

Use os controles de conteúdo. Você pode rotulá-los e, em seguida, pesquisar e substituir seu texto. Abaixo está um clipe de tela e você pode ver o que eu selecionei tem um rótulo de horas do módulo. Em seu código VBA, você teria uma rotina semelhante à que incluí como um exemplo abaixo que procurou todos os controles de conteúdo no documento e substituiu o texto dos controles desejados.

ForEachccIndoc.ContentControlsIfcc.Tag="Course hours" Then
            cc.Range.Text = courseHours
        End If
        If cc.Tag = "Course minutes" Then
            cc.Range.Text = courseMinutes
        End If
        Next
    
por 08.07.2018 / 14:20