为什么在Excel中粘贴文本文件会中断句子

我写了一个脚本,循环了数百个简单的文本文件。 该脚本将打开一个文件,将其粘贴到Excel中,提取一些数据,删除文本文件并转到下一个文件。 它直到几天前,完美的工作,当它粘贴到Excel后,它打开其中的一个文件(它只发生在一个特定的文件),我注意到其中一个线路突然结束…如果我将Debug.Print该文件我可以看到,所有的东西都在那里,但是如果我将它粘贴到Excel中,同样的一行会突然结束…有没有人知道可能是什么原因造成的? 如果我手动将文本复制并粘贴到一个新的文本文件中,那么这个更加奇怪的问题是,Excel处理过程中没有任何问题…下面是处理这些文本文件的代码。

 MyFolder = "C:\Test\" StrFile = Dir(MyFolder & "tempfile.txt") Open MyFolder & StrFile For Binary As #1 MyData = Space$(LOF(1)) Get #1, , MyData Close #1 strData() = Split(MyData, vbCrLf) LineNumber = 1 For xy = LBound(strData) To UBound(strData) Debug.Print strData(xy) 'THIS WORKS! Range("A" & LineNumber).Value = strData(xy) 'THIS DOESN'T! LineNumber = LineNumber + 1 Next xy 

谢谢!

我发现是什么导致这个问题! 我在Word中打开了文本文件,注意到突然剪切的那一行有一些奇怪的符号(四个空的方块?),这些符号在记事本中是不可见的。 于是我开始在Word中打开所有其他的文件,而且他们中的任何一个都没有。 所以然后我开始阅读有关“ 不可打印的字符 ”,并提出了这个解决scheme…我用空格replace每个ASCII(0) (NULL)字符。 我张贴的情况下,别人将不得不处理这样的问题:

 MyFolder = "C:\Test\" StrFile = Dir(MyFolder & "tempfile.txt") Open MyFolder & StrFile For Binary As #1 MyData = Space$(LOF(1)) Get #1, , MyData Close #1 strData() = Split(MyData, vbCrLf) LineNumber = 1 For Each sData In strData sData = Replace(sData, Chr(0), " ") Range("A" & LineNumber).Value = sData 'Now it works!! LineNumber = LineNumber + 1 Next 

谢谢大家的帮助!

(需要格式化答案,但这实在是一个评论)

试试这个:

 Sub tgr() Dim oFSO As Object Dim sFolderPath As String Dim sFileName As String Dim sFullText As String Dim aOutput() As String Set oFSO = CreateObject("Scripting.FileSystemObject") sFolderPath = "C:\Test\" sFileName = Dir(sFolderPath & "tempfile.txt") sFullText = oFSO.OpenTextFile(sFolderPath & sFileName).ReadAll aOutput = Split(sFullText, vbCrLf) With Range("A1").Resize(UBound(aOutput) - LBound(aOutput) + 1) .Value = Application.Transpose(aOutput) End With End Sub 

如果仍然失败,则需要提供问题文本文件。