我在使用VBA创建文本文件的Excel电子表格中隐藏字符存在一个特殊问题。我已经附加了文件测试版的链接,我会尽力解释这个问题。
该文件创建一个普通的txt文件,可用于将数据提供给我们使用的系统。它运行正常,但是我们已经提供了大约15,000行数据,并且在整个地方随机点都有隐藏的字符。
在测试文件中,有1行,它的单元格B11在值的开头和结尾有隐藏字符。如果你把光标放在它的末尾,然后按退格键,它看起来好像什么也没发生,但实际上你刚刚删除了其中一个字符。
就Excel而言,那些隐藏的字符是问号,但它们不是,因为文本流会解析那些,但它不会,而是抛出无效的过程调用错误。
我尝试过使用Excel的CLEAN公式,我尝试过VBA等价物,尝试使用'替换'但似乎没有人认出这些字符。 Excel确信它们只是问号,即使ASCII字符调用给我相同的答案(63),但是替换不会将它们替换为问号,它只是省略了它们!
对此有任何帮助,即使它只是我可以申请的公式,我们将不胜感激。为了数据保护的利益,文件中的数据是假的,它不是真正的NI编号。
答案 0 :(得分:1)
此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。