Seu fornecedor foi adquirido, e “ACME Corp” agora é “Globex Ltd” em todos os contratos, cronogramas, orçamentos e apresentações que o mencionam. Com o servidor GroupDocs.Editor MCP em execução localmente, Claude Desktop, Cursor ou Copilot fazem isso em lote: para cada arquivo na pasta ele chama replace_text, mantém a formatação, relata quantas ocorrências foram alteradas e não grava nada para os arquivos que nunca mencionaram o nome antigo. Nada é enviado, e nenhum original é sobrescrito:

Renomeie ACME Corp para Globex Ltd em todos os documentos da pasta contracts, mantenha a formatação e me dê uma contagem por arquivo.

A versão passo a passo está na documentação: Como encontrar e substituir texto em uma pasta de documentos sem quebrar a formatação.

Por que isso é um trabalho para uma ferramenta e não para o modelo?

Porque o resultado precisa ser verificável. Quarenta documentos são demais para comparar visualmente, e um modelo que “atualizou todos os contratos” não oferece nada para conferir. Uma ferramenta de busca e substituição fornece um número por arquivo. Os números são o rastro de auditoria: você sabe quais arquivos foram alterados, em quanto, e quais não precisaram.

Ela também precisa ser monótona da maneira certa. O nome da parte em negrito permanece em negrito, a tabela de taxas mantém sua grade, os títulos preservam seus estilos. O modelo nunca reescreve o documento: o motor o abre, substitui as palavras e grava uma cópia. Um detalhe no servidor 26.10.0: essa cópia é escrita a partir do modelo de edição HTML do motor, e um footer do Word não é transferido. Um contrato que nomeia o fornecedor no rodapé precisa da ida e volta HTML paginada; o FAQ lista o que um documento Word mantém.

O que o agente vê

Capturado do GroupDocs.Editor.Mcp 26.10.0 contra um pequeno conjunto sintético: um acordo de serviços, um NDA, uma carta de boas‑vindas, um orçamento de três planilhas e um deck de revisão de três slides.

-> replace_text {"file":{"filePath":"contracts/msa-northwind.docx"},
     "find":"ACME Corp","replace":"Globex Ltd","wholeWord":true}
<- Replaced 6 occurrence(s) of 'ACME Corp' in 'msa-northwind.docx'
   Saved to: …/msa-northwind_edited.docx

-> replace_text {"file":{"filePath":"contracts/nda-northwind.docx"}, ...}
<- Replaced 1 occurrence(s) of 'ACME Corp' in 'nda-northwind.docx'

-> replace_text {"file":{"filePath":"contracts/welcome-letter.docx"}, ...}
<- Text replacement found no matches for 'ACME Corp' in
   'welcome-letter.docx'. No file was written.

-> replace_text {"file":{"filePath":"budget.xlsx"}, ..., "worksheet":1}
<- Replaced 1 occurrence(s) of 'ACME Corp' in worksheet 1 of 3 of
   'budget.xlsx'

-> replace_text {"file":{"filePath":"review.pptx"}, ..., "slide":1}
<- Replaced 1 occurrence(s) of 'ACME Corp' in slide 1 of 3 of
   'review.pptx'

O relatório do agente se escreve sozinho: seis no acordo, um no NDA, nenhum na carta de boas‑vindas, um no resumo do orçamento, um no primeiro slide.

O loop

contracts/ + budget.xlsx + review.pptx
   |
   +-- for each file:
   |      replace_text {"find":"ACME Corp","replace":"Globex Ltd",
   |                    "wholeWord":true}   (+ "worksheet"/"slide")
   |         -> "Replaced N occurrence(s) ..."  -> <name>_edited.<ext>
   |         -> "found no matches ... No file was written."
   |
   '-- report: file -> count; files with 0 listed separately

Dois hábitos tornam o loop confiável. Use wholeWord: true para nomes, para que “ACME Corp” não corresponda dentro de “ACME Corporation Holdings”. E peça ao agente que liste os arquivos com zero correspondências, porque um zero em um arquivo que você esperava mudar é o que realmente merece uma segunda olhada.

Verificando o lote antes de substituir qualquer coisa

As cópias editadas ficam ao lado dos originais até que você decida o contrário, e esse é o momento de conferir. Três verificações simples pegam quase todo problema. Compare as contagens por arquivo com o que você esperava: um acordo que nomeia o fornecedor em cada página não deveria relatar apenas uma ocorrência. Não confie em executar a mesma substituição novamente: uma frase dividida entre formatações é perdida na segunda vez também, e “found no matches” pareceria um sinal verde. Peça ao agente que execute extract_html em cada cópia editada; sua pré‑visualização em texto puro junta as execuções de formatação, de modo que um “ACME Corp” residual apareça ali. Grafias variantes (“Acme Corp.” com ponto final, “ACME Corporation”) merecem uma passagem própria com matchCase: false ou uma expressão regular. E abra um arquivo editado de cada tipo – um contrato, uma planilha e um deck – para confirmar que a formatação e o rodapé sobreviveram. Só então mova os arquivos _edited sobre os originais, ou deixe seu sistema de documentos versioná‑los.

Padrões, maiúsculas e formato na mesma chamada

A renomeação é o caso comum, mas a mesma ferramenta cobre o resto da família “tornar a redação consistente”. No mesmo teste:

-> replace_text {"file":{"filePath":"contracts/nda-northwind.docx"},
     "find":"v2\\.3\\b","replace":"v2.4","regex":true,
     "outputName":"nda-northwind-v2.4.docx"}
<- Replaced 1 occurrence(s) of 'v2\.3\b' in 'nda-northwind.docx'

-> replace_text {"file":{"filePath":"contracts/nda-northwind.docx"},
     "find":"acme corp","replace":"Globex Ltd","matchCase":false,
     "format":"pdf"}
<- Replaced 1 occurrence(s) of 'acme corp' in 'nda-northwind.docx'
   Saved to: …/nda-northwind_edited.pdf

regex: true aceita uma expressão regular .NET, que é como um aumento de versão ou mudança de formato de data percorre uma pasta. matchCase: false captura capitalização inconsistente. format: "pdf" edita e converte em um único passo, para a cópia que vai para o outro lado.

Um aparte para agentes de codificação

O mesmo padrão funciona em um repositório. Notas de versão em DOCX e especificações em XLSX são invisíveis ao sed; Claude Code com este servidor pode atualizar a string de versão em ambos como parte da tarefa de release. Coloque a regra nas instruções do projeto para que o agente use a ferramenta em vez de tentar descompactar arquivos Office:

To change wording in .docx/.xlsx/.pptx/.pdf files in this repo, use the
groupdocs-editor MCP server's replace_text (wholeWord for names, regex for
versions). Report the count per file. Never rewrite an Office file by hand.

Limites honestos

  • A correspondência ocorre dentro de uma única execução de formatação. No nosso acordo, um sétimo “ACME Corp”, com “ACME” em itálico, não foi substituído, e a contagem de seis mostrou isso. Frases divididas entre estilos precisam da ida e volta HTML.
  • Cada resultado é gravado na raiz da pasta de saída como <name>_edited.<ext>, mesmo quando o original estava em uma subpasta. Nada é sobrescrito: um nome já usado recebe um número (msa-northwind_edited (1).docx), portanto forneça outputName quando os nomes puderem colidir.
  • No servidor 26.10.0 a cópia editada de um documento Word perde o rodapé, e os controles de conteúdo são achatados para texto simples. Verifique documentos que contenham o nome antigo no rodapé.
  • Planilhas e apresentações são editadas uma planilha ou slide por chamada. No modo avaliação apenas as duas primeiras podem ser editadas, e o servidor informa: “Evaluation mode edits only the first 2 slides of a presentation; slide 3 is beyond them.”
  • O modo avaliação também adiciona uma linha de banner a cada saída, e um PDF com mais de duas páginas é recusado.

FAQ

Ele pode substituir texto em Word, Excel e PowerPoint em um único lote?
Sim. O agente chama a mesma ferramenta por arquivo e adiciona worksheet ou slide para planilhas e decks.

Como sei quais arquivos foram alterados?
Cada chamada devolve a contagem, e arquivos sem correspondência não são gravados. Peça ao agente uma tabela por arquivo.

Os originais serão sobrescritos?
Não. Cada edição grava um novo arquivo; os originais permanecem como estavam até que você os substitua manualmente.

Aprofunde