#ProgramaçãoGlobal #Unicode #CaracteresInvisíveis #ASCII #VBA #Automação #Excel #IA #Unicode #Formatação
Pronto para levar suas planilhas Excel ao próximo nível? Se você já importou textos gerados por inteligência artificial – cheios de emojis, quebras esquisitas ou caracteres fantasmas que quebram fórmulas – sabe o pesadelo que é limpar tudo isso. Mas segure-se, porque criamos um código VBA revolucionário que varre esses caracteres invisíveis Unicode do seu Excel sem tocar nos dados ou na formatação! Estamos falando de automação de elite, projetada para transformar sua produtividade. Vamos mergulhar nessa inovação e mostrar como ela vai mudar sua vida!
Esses caracteres invisíveis, como U+200B (Zero Width Space) ou U+FEFF (BOM), são resquícios de textos gerados por IAs, herdados de dados da web ou formatação complexa. Eles não aparecem, mas causam caos: erros em fórmulas, falhas em imports ou problemas de compatibilidade. Nosso código VBA para Excel identifica e elimina esses intrusos – de marcadores bidirecionais a espaços ideográficos – com precisão de laser. E o mais incrível? Ele mantém intactas suas formatações, bordas, cores e dados, garantindo uma planilha limpa e funcional.
'===================================================================================== ' Nome do Módulo: RemoveInvisibleUnicodeExcel ' Propósito: Remove caracteres invisíveis Unicode comuns em textos gerados por IA em planilhas do Microsoft Excel, ' Autor: André Bernardes ' Data: 07/03/2025 - 06:23 ' Requisitos: Microsoft Excel com suporte a VBA; planilha ativa com dados. ' Funcionalidades: ' - Identifica e remove caracteres invisíveis Unicode (espaços, controles, direcionais, etc.). ' - Preserva formatação (fontes, cores, bordas, etc.) e dados da planilha. ' - Processa todas as células usadas na planilha ativa. ' - Gera relatório detalhado com caracteres removidos. ' - Interface com barra de progresso para planilhas 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 em todas as células usadas da planilha ativa. ' Parâmetros: Nenhum ' Retorno: Nenhum (modifica a planilha e exibe relatório) '===================================================================================== Sub RemoveInvisibleUnicodeChars() On Error GoTo ErrorHandler Dim ws As Worksheet Dim cell As Range Dim char As String Dim charCount As Object Dim totalCharsRemoved As Long Dim totalCells As Long Dim processedCells As Long Dim progress As Double Dim undoRecord As UndoRecord Dim frmProgress As UserForm ' Inicializa dicionário para contar caracteres removidos Set charCount = CreateObject("Scripting.Dictionary") totalCharsRemoved = 0 processedCells = 0 ' Configura a planilha ativa Set ws = ActiveSheet totalCells = ws.UsedRange.Cells.Count ' Inicia gravação de desfazer Set undoRecord = Application.UndoRecord undoRecord.StartCustomRecord "Remove Invisible Unicode Chars" ' Desativa atualizações de tela para desempenho Application.ScreenUpdating = False Application.Calculation = xlCalculationManual ' 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 todas as células usadas For Each cell In ws.UsedRange If Not IsEmpty(cell) And VarType(cell.Value) = vbString Then Dim cellText As String cellText = cell.Value Dim newText As String newText = cellText ' Verifica cada caractere na célula For Each char In INVISIBLE_CHARS If InStr(newText, char) > 0 Then ' Incrementa contador If charCount.Exists(char) Then charCount(char) = charCount(char) + InStr(newText, char) Else charCount.Add char, InStr(newText, char) End If totalCharsRemoved = totalCharsRemoved + InStr(newText, char) ' Remove o caractere newText = Replace(newText, char, "") End If Next char ' Atualiza a célula apenas se houve alterações If newText <> cellText Then cell.Value = newText End If End If ' Atualiza barra de progresso processedCells = processedCells + 1 progress = processedCells / totalCells frmProgress.Caption = "Progresso: " & Format(progress, "0%") DoEvents Next cell ' Restaura configurações Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic ' 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: ' Restaura configurações em caso de erro Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic ' Fecha barra de progresso 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 Excel 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 Dados'>" & _ "<mso:button id='btnRemoveInvisible' label='Remover Caracteres Invisíveis' " & _ "size='large' onAction='RemoveInvisibleUnicodeChars' " & _ "imageMso='CleanData' screentip='Remove caracteres Unicode invisíveis da planilha'/>" & _ "</mso:group>" & _ "</mso:tab>" & _ "</mso:tabs>" & _ "</mso:ribbon>" & _ "</mso:customUI>" ' Aplica personalização à faixa de opções ThisWorkbook.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 iteração por células usadas otimiza o desempenho em planilhas grandes. ' - A barra de progresso é implementada via UserForm para melhorar a experiência do usuário. ' - O relatório detalhado auxilia na auditoria de alterações. ' - O suporte a desfazer (Undo) permite reverter mudanças. ' - A integração com a faixa de opções facilita o acesso à macro. ' - Desativação de atualizações de tela e cálculo automático melhora a performance. '=====================================================================================
A experiência é puro poder: um botão na faixa de opções do Excel aciona a macro, e uma barra de progresso te guia enquanto o código processa planilhas gigantes em segundos. Ele ainda gera um relatório detalhado, mostrando quantos caracteres foram removidos (ex.: “15 U+200C eliminados”). Perfeito para analistas de dados, contadores ou qualquer um que lida com textos de IA em planilhas, especialmente em contextos multilíngues onde caracteres como U+202E (RTL Override) podem virar uma dor de cabeça. E, claro, você pode desfazer tudo com um clique, para testar sem medo!
Por que isso é um divisor de águas? Porque esse VBA economiza horas de limpeza manual, reduz erros e eleva a qualidade dos seus dados. Imagine importar relatórios gerados por IA, limpar tudo em um piscar de olhos e ainda manter suas formatações impecáveis. É ideal para empresas que usam IAs em fluxos de dados, freelancers que processam grandes volumes ou até cientistas de dados lidando com datasets multilíngues. E se você curte personalização, pode facilmente expandir a lista de caracteres a remover – o céu é o limite!
Compreendendo os Caracteres Invisíveis:
Junte-se à revolução da automação no Excel! Esse código VBA não é só uma ferramenta – é um superpoder para quem quer planilhas impecáveis sem esforço. Baixe, implemente e sinta a diferença nos seus projetos. Para os fãs de VBA, prepare-se para se apaixonar: essa solução combina performance, usabilidade e inovação, mostrando o potencial da programação no Office. Vamos limpar o futuro dos dados gerados por IA, um caractere invisível de cada vez!
Nenhum comentário:
Postar um comentário