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

在使用VBA创build文本文件的Excel电子表格中,我有一个隐藏字符的特殊问题。 我附上了一个链接到文件的testing版本,我会尽我所能解释这个问题。

该文件创build一个普通的txt文件,可用于将数据提供给我们使用的系统。 它通常运行良好,但是我们已经提供了大约15,000行数据,并且在整个随机点都有隐藏的字符。

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

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

我已经尝试过使用Excel的CLEAN公式,我已经尝试了VBA等效,尝试使用“replace”,但似乎没有认出这些字符。 Excel确信它们只是问号,即使是一个ASCII字符的调用也能给出相同的答案(63),但是replace并不会将它们replace为问号,而只是省略了它们!

任何帮助,即使这只是一个公式,我可以申请将不胜感激。 为了保护数据,文件中的数据是伪造的,它不是真正的NI编号。

用vba代码的excel文件在这里

这个VBAmacros可以独立运行或与ClearFormattingmacros一起运行。 它从样本中去除了stream氓单身者。

 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字符范围search和replace显然会加快速度。 closures.EnableEvents.ScreenUpdating等也将有所帮助。 我相信计算已经在手动。 我有意在循环中留下一个DoEvents ,因为我的第一次运行是几千个不同的unichars。