Personagem estranho causando erro ao tentar importar a planilha do Excel

0

Este caractere "" (que não é visível depois de salvar este comentário). Parece que dois suportes se juntaram, tocando para formar um retângulo alto. []

Uma planilha Excel exportada do Filemaker (versão antiga) causa um erro e interrompe a importação em uma determinada linha que possui um caractere recorrente.

Eu só consigo ver o caractere estranho quando copio / cole o conteúdo da célula no Wordpad. A linha contém 2 tags de marcação de quebra de linha não vistas e entre elas está. Sempre que isso acontece eu tenho que editar o conteúdo no Wordpad, cole e, em seguida, ele funciona. Continua aparecendo a cada poucas linhas.

Segunda pergunta. Existe uma maneira de procurar por isso no Excel e excluir todos eles?

    
por Adam White 04.01.2018 / 21:18

1 resposta

1

Precisamos primeiro identificar o personagem mal-intencionado e depois removê-lo.

Primeiro, coloque a seguinte função definida pelo usuário em um módulo padrão:

Public Function WhatsIn(s As String) As String
    Dim msg As String, i As Long, L As Long

    L = Len(s)
    msg = L & vbCrLf
    For i = 1 To L
        msg = msg & i & "    " & AscW(Mid(s, i, 1)) & vbCrLf
    Next i
    WhatsIn = msg
End Function

A função nos diz exatamente o que uma célula contém. Dá:

  1. o número de caracteres
  2. para cada caractere, o valor unicode

    Aqui está um exemplo:

NóssabemosquantoscaracteresoC2contémesabemosocódigoASCIIparacadacaractere.

FunçõesDefinidaspeloUsuário(UDFs)sãomuitofáceisdeinstalareusar:

  1. ALT-F11exibeajaneladoVBE
  2. ALT-IALT-Mabreumnovomódulo
  3. coleomaterialefecheajaneladoVBE

Sevocêsalvarapastadetrabalho,aUDFserásalvacomela.SevocêestiverusandoumaversãodoExcelposteriora2003,deverásalvaroarquivocomo.xlsmemvezde.xlsx

PararemoveroUDF:

  1. abrirajaneladoVBEcomoacima
  2. limpeocódigo
  3. fecheajaneladoVBE

ParausaroUDFdoExcel:

=WhatsIn(A1)

Parasabermaissobremacrosemgeral,consulte:

link

e

link

e para detalhes sobre UDFs, consulte:

link

As macros devem estar ativadas para que isso funcione!

Quando soubermos o número ASCII, execute uma macro como:

Sub KleanUp()
    Cells.Replace ChrW(166), ""
End Sub

onde substituiríamos o 166 com o número real.

    
por 04.01.2018 / 22:09