2017-10-05 58 views
1

我编写了一个脚本,循环使用数百个简单的文本文件。该脚本打开一个文件,将其粘贴到Excel中,提取一些数据,删除文本文件并转到下一个文件。它直到几天前才完美工作,当它粘贴到Excel后打开其中一个文件(它只发生在一个特定的文件)我注意到其中一条线突然结束... 如果我会Debug.Print该文件,我可以看到一切都在那里,但如果我将它粘贴到Excel中,同一条线突然结束... 有谁知道可能是什么原因造成的?如果我将手动复制并粘贴文本到一个新的文本文件,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 

谢谢!

+0

你试图写入单个单元的字符数是多少?你知道Excel不是文字处理器吗? –

+0

每个文本文件中最多有50行,每行不超过130个字符。我从那些电子表格中需要的文件中提取数据。 – hod

+0

这不加起来。 VBA认为一个单元格最多只能容纳255个字符。 130在任何方面都不应该成为问题。 –

回答

1

我发现了什么导致这个问题!我在Word中打开了文本文件,并注意到突然剪切的那一行有一些奇怪的符号(四个空的方块?),它们在记事本中不可见。于是我开始在Word中打开所有其他文件,但他们中的任何一个都没有。 因此,我开始阅读有关“非打印字符”,并提出了这种解决方案...我用空格替换每个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 

谢谢您的帮助大家!

0

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

试试这个:

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 

如果还是失败,你需要对问题提供文本文件。

+0

感谢您的尝试!但是这也不起作用... – hod

+0

我怎么能提供该文件? – hod

+0

@kurtz可以编辑您的问题,并将其内容作为代码块复制/粘贴到问题的底部,以便我们可以将其复制/粘贴到文本文件中,或者您必须将文本文件上传到谷歌驱动器或Dropbox,然后提供链接。 – tigeravatar

相关问题