Excel 文件包含无法删除的无效隐藏字符



我在使用VBA创建文本文件的Excel电子表格中遇到隐藏字符的特殊问题。我已经附上了该文件测试版本的链接,我会尽我所能解释这个问题。

该文件创建了一个普通的txt文件,可用于将数据馈送到我们使用的系统中。它正常工作,但我们已经收到了大约15000行的数据,并且在各处的随机点都有隐藏的字符。

在测试文件中,有1行,单元格B11在值的开头和结尾都有隐藏字符。如果你把光标放在它的末尾,然后按退格键,看起来好像什么都没发生,但实际上你只是删除了其中一个字符。

就Excel而言,这些隐藏字符是问号,但它们不是,因为文本流会解析这些字符,但它不会,反而会抛出一个无效的过程调用错误。

我试过使用Excel的CLEAN公式,我试过VBA等效程序,试过使用"替换",但似乎没有什么能识别这些字符。Excel确信它们只是问号,即使是ASCII字符调用也会给我相同的答案(63),但替换并不能将它们替换为问号,它只是省略了它们!

在这方面的任何帮助,即使这只是一个我可以应用的公式,也将不胜感激。为了数据保护的利益,文件中的数据是假的,顺便说一句,这不是任何人的真实NI号码。

带有vba代码的excel文件在这里

此VBA宏可以单独运行,也可以与ClearFormatting宏一起运行。它确实从样本中剔除了流氓unichars。

Sub strip_Rogue_Unichars()
    Dim uc As Long
    With Cells(11, 1).CurrentRegion
        For uc = 8000 To 8390
            .Replace what:=ChrW(uc), replacement:=vbNullString, lookat:=xlPart
            DoEvents
        Next uc
    End With
End Sub

可能有更好的方法可以做到这一点,并且能够限制要搜索和替换的Unicode字符的范围显然会加快速度。关闭.EnableEvents.ScreenUpdating等同样会有所帮助。我相信计算已经是手动的了。我故意在循环中留下一个DoEvents,因为我的第一次运行是数千个不同的unichars。

最新更新