Macros no word

Anônima
2022-12-01T03:06:57+00:00

Eu já criei algumas macros no word, porém não sei quais métodos ou propriedades usar para que as ações aconteçam a partir da seleção simples e prévia de um intervalo de texto. Quando eu gravo as macros, as substituições acontecem no documento inteiro e não apenas na seleção que eu fiz. Sei que as ações com o mouse não são gravadas, por isso não consigo saber quais comandos usar.

Microsoft 365 e Office | Word | Para uso doméstico | Outro

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários

17 respostas

Classificar por: Mais útil
  1. Anônima
    2022-12-06T23:04:13+00:00

    Incrível! Muito obrigado! Sem palavras para agradecer. Mas quanto mais você me dá respostas mais tenho perguntas... rs

    Tentei criar uma nova função para usar caracteres curinga

    informatica1 "÷", "/"

    informatica1 "{-", "_"

    informatica2 ".([a-z]{1;3})", " " - porém tudo que tentei colocar aqui, ficou literal. Estava acostumado com os códigos do substituir com caracteres curinga, mas não funcionou. Mesmo mudando para .MatchWildcards = True

    Gostaria de, por exemplo, susbstituir parte do que encontrei por outros caracteres ou ainda aplicar outra formatação.

    PS. Onde posso aprender mais sobre funções?

    Esta resposta foi útil?

    0 comentários Sem comentários
  2. Anônima
    2022-12-05T21:33:48+00:00

    >> Mas como faço para substituir mais de um item nessa mesma macro? <<

    Há uma maneira "certa" de fazer isso, mas minha maneira rápida e preguiçosa geralmente é repetir o bloco de código wRange.find para selection.find.run. Ele funcionará para algumas substituições, mas usar uma função para esse loop e variáveis para o texto daria um código mais limpo.

    Isso substituirá a letra a por / e a letra c por \ - se você quiser corresponder a maiúsculas e minúsculas, altere false para true no wRangeFind.

    Sub MultiSearch()

    test3 "a", "/"

    test3 "c", ""

    End Sub

    Function test3(ByVal strfind As String, strReplace As String)

    Dim wRange As Word.Range

    Dim wRangeLimit As Word.Range

    Set wRange = Selection.Range

    Set wRangeLimit = wRange.Duplicate

    With wRange.Find

    .ClearFormatting 
    
    .Replacement.ClearFormatting 
    
    .Text = strfind 
    
    .Replacement.Text = strReplace 
    
    .Forward = True 
    
    .Wrap = wdFindAsk 
    
    .Format = False 
    
    .MatchCase = False 
    
    .MatchWholeWord = False 
    
    .MatchKashida = False 
    
    .MatchDiacritics = False 
    
    .MatchAlefHamza = False 
    
    .MatchControl = False 
    
    .MatchWildcards = False 
    
    .MatchSoundsLike = False 
    
    .MatchAllWordForms = False 
    
    While .Execute 
    
      If wRange.InRange(wRangeLimit) Then 
    
        wRange.Text = strReplace 
    
        wRange.Collapse wdCollapseEnd 
    
      Else 
    
        Exit Function 
    
      End If 
    
    Wend 
    

    End With

    Selection.Find.Execute Replace:=wdReplaceAll

    End Function

    Esta resposta foi traduzida automaticamente. Como resultado, pode haver erros gramaticais ou expressões estranhas.

    Esta resposta foi útil?

    0 comentários Sem comentários
  3. Anônima
    2022-12-05T18:51:38+00:00

    Deu certo! Obrigado. Mas como faço para substituir mais de um item nessa mesma macro? E outra pergunta: existe como, ao terminar de fazer as substituições, o texto ainda permanecer selecionado?

    "÷" para "/" e "{-" para "_"

    http÷÷www.casa{-cultura.com.br÷A1995

    9÷3=3

    9÷3=3

    {-1995}

    Ficando assim:

    http//www.casa_cultura.com.br/A1995

    9÷3=3

    9÷3=3

    {-1995}

    Oh desculpe, eu relacionei depois que eu enviei-lo que eu testei em todo o texto e não uma seleção menor.

    Você;' precisará obter os intervalos de início e fim - o que você pode fazer com isso

    Sub test3()
    Dim wRange As Word.Range

    Dim wRangeLimit As Word.Range

    Set wRange = Selection.Range

    Set wRangeLimit = wRange.Duplicate

    With wRange.Find

    .ClearFormatting

    .Replacement.ClearFormatting

    .Text = "÷"

    .Replacement.Text = "/"

    .Forward = True

    .Wrap = wdFindAsk

    .Format = False

    .MatchCase = False

    .MatchWholeWord = False

    .MatchKashida = False

    .MatchDiacritics = False

    .MatchAlefHamza = False

    .MatchControl = False

    .MatchWildcards = False

    .MatchSoundsLike = False

    .MatchAllWordForms = False

    While .Execute

    If wRange.InRange(wRangeLimit) Then

    wRange.Text = "/"

    wRange.Collapse wdCollapseEnd

    Else

    Exit Sub

    End If

    Wend

    End With

    Selection.Find.Execute Replace:=wdReplaceAll

    End Sub

    Esta resposta foi traduzida automaticamente. Como resultado, pode haver erros gramaticais ou expressões estranhas.

    Esta resposta foi útil?

    0 comentários Sem comentários
  4. Anônima
    2022-12-05T14:18:37+00:00

    Testei o código, mas não deu certo. A macro muda todo o documento, até o que estava fora da seleção.

    Então você deseja selecionar um bloco de texto no documento e a macro acionará a pesquisa e substituirá?

    Selection.Text selecionará a seleção.

    Sub Teste()

    Selection.Range = Selection.Text

    Selection.Find.Replacement.ClearFormatting

    With Selection.Find

    .Text = "÷"

    .Replacement.Text = "/"

    .Forward = True

    .Wrap = wdFindContinue

    .Format = True

    .MatchCase = False

    .MatchWholeWord = False

    .MatchWildcards = False

    .MatchSoundsLike = False

    .MatchAllWordForms = False

    End With

    Selection.Find.Execute Replace:=wdReplaceAll

    End Sub

    Esta resposta foi traduzida automaticamente. Como resultado, pode haver erros gramaticais ou expressões estranhas.

    Esta resposta foi útil?

    0 comentários Sem comentários
  5. Anônima
    2022-12-05T03:25:16+00:00

    Então você deseja selecionar um bloco de texto no documento e a macro acionará a pesquisa e substituirá?

    Selection.Text selecionará a seleção.

    Sub Teste()

    Selection.Range = Selection.Text

    Selection.Find.Replacement.ClearFormatting

    With Selection.Find 
    
        .Text = "÷" 
    
        .Replacement.Text = "/" 
    
        .Forward = True 
    
        .Wrap = wdFindContinue 
    
        .Format = True 
    
        .MatchCase = False 
    
        .MatchWholeWord = False 
    
        .MatchWildcards = False 
    
        .MatchSoundsLike = False 
    
        .MatchAllWordForms = False 
    
    End With 
    
    Selection.Find.Execute Replace:=wdReplaceAll 
    

    End Sub

    Esta resposta foi traduzida automaticamente. Como resultado, pode haver erros gramaticais ou expressões estranhas.

    Esta resposta foi útil?

    0 comentários Sem comentários