2017-10-05 5 views
1

何百もの単純なテキストファイルをループするスクリプトを作成しました。スクリプトはファイルを開き、Excelに貼り付け、いくつかのデータを抽出し、テキストファイルを削除して次のファイルに移動します。数日前、Excelに貼り付けた後にそのファイルの1つ(特定のファイルにのみ起こっています)が開かれたときに、そのファイルの1つが突然終了してしまいました... もし私が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

1つのセルに何文字を書き込もうとしていますか?あなたは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質問を編集して内容をコードブロックとして質問の下部にコピー/貼り付けて、テキストファイルにコピー&ペーストするか、Googleのような場所にテキストファイルをアップロードする必要がありますドライブまたはドロップボックスをクリックし、リンクを提供します。 – tigeravatar

関連する問題