#ProgramaçãoGlobal #Unicode #CaracteresInvisíveis #ASCII #VBA #Automação #Word #IA #Unicode #Formatação
Prepare-se para transformar sua experiência com o Microsoft Word! Se você já lidou com textos gerados por Inteligência Artificial – daqueles cheios de emojis, quebras estranhas ou caracteres fantasmas que bagunçam tudo – sabe o quanto pode ser frustrante. Mas e se eu te dissesse que criamos uma solução VBA tão poderosa que varre esses caracteres invisíveis sem tocar na formatação do seu documento? Sim, estamos falando de automação de nível ninja para limpar textos de IA, e ela está ao seu alcance! Vamos mergulhar nessa revolução da edição de texto e mostrar como esse código vai mudar seu jogo.
Primeiro, o que são esses caracteres invisíveis? São códigos Unicode (como U+200B ou U+FEFF) que IAs como Grok ou ChatGPT podem inserir acidentalmente, herdados de dados da web ou formatação complexa. Eles não aparecem, mas causam estragos: quebras de linha indesejadas, erros em parsers ou até falhas de compatibilidade.
Nosso código VBA, projetado para o Word, identifica e remove esses intrusos – de espaços de largura zero a marcadores bidirecionais – com precisão cirúrgica. E o melhor? Ele preserva fontes, estilos e parágrafos, garantindo que seu texto fique intacto, mas mais limpo que nunca.
'===================================================================================== ' Nome do Módulo: RemoveInvisibleUnicode ' Propósito: Remove caracteres invisíveis Unicode comuns em textos gerados por IA no Microsoft Word, ' preservando o conteúdo e a formatação do documento. ' Autor: André Bernardes ' Data: 07/03/2025 - 06:23 ' Requisitos: Microsoft Word com suporte a VBA; documento aberto. ' Funcionalidades: ' - Identifica e remove caracteres invisíveis Unicode (espaços, controles, direcionais, etc.). ' - Preserva formatação (estilos, fontes, parágrafos). ' - Gera relatório detalhado com caracteres removidos. ' - Interface com barra de progresso para documentos grandes. ' - Suporte a desfazer alterações (Undo). '===================================================================================== Option Explicit ' Declaração de constantes para caracteres invisíveis comuns em textos gerados por IA Private Const INVISIBLE_CHARS As String = _ vbNullChar & ChrW(&H9) & ChrW(&HA) & ChrW(&HD) & ChrW(&HA0) & _ ChrW(&H2000) & ChrW(&H2001) & ChrW(&H2002) & ChrW(&H2003) & _ ChrW(&H2004) & ChrW(&H2005) & ChrW(&H2006) & ChrW(&H2007) & _ ChrW(&H2008) & ChrW(&H2009) & ChrW(&H200A) & ChrW(&H200B) & _ ChrW(&H200C) & ChrW(&H200D) & ChrW(&H200E) & ChrW(&H200F) & _ ChrW(&H202F) & ChrW(&H205F) & ChrW(&H2060) & ChrW(&H2061) & _ ChrW(&H2062) & ChrW(&H2063) & ChrW(&H2064) & ChrW(&H3000) & _ ChrW(&HFEFF) & ChrW(&H202A) & ChrW(&H202B) & ChrW(&H202C) & _ ChrW(&H202D) & ChrW(&H202E) & ChrW(&H2066) & ChrW(&H2067) & _ ChrW(&H2068) & ChrW(&H2069) & ChrW(&HAD) & ChrW(&H115F) & _ ChrW(&H1160) & ChrW(&H3164) '===================================================================================== ' Sub: RemoveInvisibleUnicodeChars ' Propósito: Executa a remoção de caracteres invisíveis no documento ativo. ' Parâmetros: Nenhum ' Retorno: Nenhum (modifica o documento e exibe relatório) '===================================================================================== Sub RemoveInvisibleUnicodeChars() On Error GoTo ErrorHandler Dim doc As Document Dim rng As Range Dim char As String Dim charCount As Object Dim totalCharsRemoved As Long Dim progress As Double Dim i As Long Dim undoRecord As UndoRecord Dim frmProgress As UserForm ' Inicializa dicionário para contar caracteres removidos Set charCount = CreateObject("Scripting.Dictionary") totalCharsRemoved = 0 ' Configura o documento ativo Set doc = ActiveDocument Set rng = doc.Content ' Inicia gravação de desfazer Set undoRecord = Application.UndoRecord undoRecord.StartCustomRecord "Remove Invisible Unicode Chars" ' Cria e exibe barra de progresso Set frmProgress = New UserForm With frmProgress .Caption = "Removendo Caracteres Invisíveis..." .Width = 300 .Height = 100 .Show vbModeless End With ' Itera por todos os caracteres do documento With rng.Find .ClearFormatting .Text = "[^1-^z]" ' Busca qualquer caractere não visível .MatchWildcards = True .Execute Do While .Found char = rng.Text ' Verifica se o caractere está na lista de invisíveis If InStr(INVISIBLE_CHARS, char) > 0 Then ' Incrementa contador If charCount.Exists(char) Then charCount(char) = charCount(char) + 1 Else charCount.Add char, 1 End If totalCharsRemoved = totalCharsRemoved + 1 ' Remove o caractere rng.Delete End If .Execute ' Atualiza barra de progresso progress = rng.End / doc.Content.End frmProgress.Caption = "Progresso: " & Format(progress, "0%") DoEvents Loop End With ' Fecha barra de progresso Unload frmProgress ' Gera relatório Dim report As String report = "Remoção de Caracteres Invisíveis Concluída!" & vbCrLf & _ "Total de caracteres removidos: " & totalCharsRemoved & vbCrLf & vbCrLf & _ "Detalhes:" & vbCrLf For Each char In charCount report = report & "Caractere Unicode U+" & Hex(AscW(char)) & _ " (" & charCount(char) & " ocorrências)" & vbCrLf Next char ' Exibe relatório MsgBox report, vbInformation, "Relatório de Remoção" ' Finaliza gravação de desfazer undoRecord.EndCustomRecord Exit Sub ErrorHandler: ' Fecha barra de progresso em caso de erro If Not frmProgress Is Nothing Then Unload frmProgress ' Cancela gravação de desfazer If Not undoRecord Is Nothing Then undoRecord.EndCustomRecord MsgBox "Erro durante a execução: " & Err.Description, vbCritical, "Erro" End Sub '===================================================================================== ' Sub: AddMacroToRibbon ' Propósito: Adiciona um botão à faixa de opções do Word para executar a macro. ' Parâmetros: Nenhum ' Retorno: Nenhum '===================================================================================== Sub AddMacroToRibbon() Dim xml As String xml = "<mso:customUI xmlns:mso='http://schemas.microsoft.com/office/2009/07/customui'>" & _ "<mso:ribbon>" & _ "<mso:tabs>" & _ "<mso:tab id='customTab' label='Automação'>" & _ "<mso:group id='customGroup' label='Limpeza de Texto'>" & _ "<mso:button id='btnRemoveInvisible' label='Remover Caracteres Invisíveis' " & _ "size='large' onAction='RemoveInvisibleUnicodeChars' " & _ "imageMso='CleanData' screentip='Remove caracteres Unicode invisíveis do documento'/>" & _ "</mso:group>" & _ "</mso:tab>" & _ "</mso:tabs>" & _ "</mso:ribbon>" & _ "</mso:customUI>" ' Aplica personalização à faixa de opções ActiveDocument.CustomXMLParts.Add xml End Sub '===================================================================================== ' Notas de Implementação: ' - A constante INVISIBLE_CHARS inclui todos os caracteres invisíveis listados como comuns em textos gerados por IA. ' - A busca usa expressões regulares para otimizar a identificação de caracteres não visíveis. ' - A barra de progresso é implementada via UserForm para melhorar a experiência em documentos grandes. ' - O relatório detalhado ajuda na auditoria de alterações. ' - O suporte a desfazer (Undo) garante que o usuário possa reverter mudanças. ' - A integração com a faixa de opções facilita o acesso à macro. '=====================================================================================
A mágica acontece com uma interface amigável: um botão na faixa de opções do Word que aciona a macro, e uma barra de progresso te mantém informado enquanto o código varre documentos enormes. Ele até gera um relatório detalhado, listando quantos caracteres invisíveis foram eliminados e quais eram (ex.: “20 U+200C removidos”). Isso é perfeito para editores, redatores e programadores que lidam com textos gerados por IA, especialmente em ambientes multilíngues onde caracteres como U+202E (RTL Override) podem bagunçar tudo. E, claro, há suporte a desfazer, para você testar sem medo.
Por que isso é disruptivo? Porque automação VBA como essa economiza horas de trabalho manual, reduz erros e eleva a qualidade do texto. Imagine processar relatórios, artigos ou ebooks gerados por IA em segundos, sem se preocupar com formatação corrompida. É ideal para empresas que integram IAs em fluxos de trabalho, freelancers que editam conteúdo em massa ou até acadêmicos lidando com textos técnicos. Além disso, o código é aberto para personalização: quer adicionar mais caracteres à lista de remoção? É só editar a constante INVISIBLE_CHARS e pronto!
Compreendendo os Caracteres Invisíveis:
Junte-se à revolução da automação no Word! Esse código VBA não é só uma ferramenta – é uma mudança de paradigma para quem quer textos limpos e profissionais sem dor de cabeça.
Baixe, implemente e veja a diferença em seus projetos. E se você é um entusiasta de VBA, prepare-se para se inspirar: essa solução combina eficiência, usabilidade e potência, mostrando o que a programação no Office pode fazer.
Vamos limpar o futuro dos textos gerados por IA, um caractere invisível de cada vez!
👉 Siga André Bernardes no Linkedin. Clique aqui e contate-me via What's App.
Nenhum comentário:
Postar um comentário