Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除无效字符,如&;nbsp在Excel中从我的CSV中删除,而不使用任何其他编程环境_Excel_Vba_Csv_Text - Fatal编程技术网

如何删除无效字符,如&;nbsp在Excel中从我的CSV中删除,而不使用任何其他编程环境

如何删除无效字符,如&;nbsp在Excel中从我的CSV中删除,而不使用任何其他编程环境,excel,vba,csv,text,Excel,Vba,Csv,Text,我有一个CSV文件,但我被告知它包含无效字符(等等)。如何在Excel中清理它?这是假设您没有任何其他编程工具,只有Mac或Windows计算机上的Excel。其目的是转换CSV文件,使其不包含这些非法字符。一种解决方案是使用此宏(根据需要调整单元格范围): 因为它是一个CSV文件,所以没有理由不就地修改该文件。如果你只是想把它作为另一个过程的输入,那么将其加载到Excel中可能是个坏主意,因为你会遇到本地化、数字自动转换、小数转换为科学符号等问题 这要好得多(而且速度非常快——一个20MB的测

我有一个CSV文件,但我被告知它包含无效字符(等等)。如何在Excel中清理它?这是假设您没有任何其他编程工具,只有Mac或Windows计算机上的Excel。其目的是转换CSV文件,使其不包含这些非法字符。

一种解决方案是使用此宏(根据需要调整单元格范围):


因为它是一个CSV文件,所以没有理由不就地修改该文件。如果你只是想把它作为另一个过程的输入,那么将其加载到Excel中可能是个坏主意,因为你会遇到本地化、数字自动转换、小数转换为科学符号等问题

这要好得多(而且速度非常快——一个20MB的测试文件只需不到一秒钟):

请注意,您需要添加对MS脚本运行时和MS VBScript正则表达式的引用,或者更改为后期绑定

这样称呼:

ScrubCsv "C:\some.csv"

其中一种方法是使用宏。答案部分的代码如下所示。欢迎更多的方法。请分享。这将有助于在这里添加更多的上下文。您是如何生成该文件的?它的用途是什么?您发布该问题只是为了能够立即发布代码吗?这有什么作用?@teylyn-谢谢,目的确实是通过发布我自己的方法来帮助社区,并希望有更好或更短的宏。@teylyn,事实上,发布和回答你自己的问题没有什么错。请参阅。很抱歉提出一个问题:请您分享运行您的代码类型所需的工具好吗?@SuhailHalai-在VB编辑器中:工具->引用…,然后选中“Microsoft脚本运行时”和“Microsoft VBScript正则表达式x.x”框。感谢您的澄清!供其他人参考,在Excel For Mac中,它位于“菜单>工具>宏>Visual Basic编辑器”中
Private Sub ScrubCsv(filepath As String)
    Dim fso As FileSystemObject
    Set fso = New FileSystemObject

    Dim buffer As String
    With fso.OpenTextFile(filepath)
        buffer = .ReadAll
        .Close
    End With

    With New RegExp
        .Pattern = "[^ -~\n\r]"  'All printable chars, plus CR and LF
        .Global = True
        .MultiLine = True
        buffer = .Replace(buffer, vbNullString)
    End With

    With fso.CreateTextFile(filepath)
        .Write buffer
        .Close
    End With
End Sub
ScrubCsv "C:\some.csv"