2014-11-01 7 views
1

VBA 코드를 통해 Excel로 .txt 파일을 가져온 다음 텍스트를 열 명령으로 내용의 서식을 지정하려고합니다.Excel로 txt 파일 가져 오기 Excel에서 텍스트를 서식이있는 열로 입력하십시오.

txt 파일은 다음과 같은 콘텐츠 보유 : 내가 찾은 함께 난리 한 코드를 사용하여, 현재

DATE | 1 | 2 | 3 | 4 | Something ||||| Not Sure ||||| 
DATE | 5 | 6 | 7 | 8 | New ||||| Whatever ||||| 

을, 나는이 단지 얻는다 여기까지

Sub Sample() 
    Dim MyData As String, strData() As String, myFile As String 

    myFile = Application.GetOpenFilename() 

    Open myFile For Binary As #1 
    MyData = Space$(LOF(1)) 
    Get #1, , MyData 
    Close #1 
    strData() = Split(MyData, "|") 


End Sub 

얻을 관리했습니다 txt 파일의 모든 데이터를 가져 와서 각 항목을 배열로 분리합니다.

배열의 항목을 Range ("A5")부터 Excel의 열에 넣고 각 새 행을 계산하고 싶습니다.

도움 말?

(편집 : 나는 빈 배열 선택에 도달 할 때마다 행을 아래로 이동한다고 생각했지만 각 행에는 많은 공백이 있으며 작동하지 않을 것입니다. 또한 행의 길이가 내용에 따라 일치하지 않습니다. .)

당신은 데이터를 두 가지 방법으로 분할 할 필요가
+0

당신이 _Text_ 파일을 처리하는 특별한 이유를 치료하려면 _Binary_로? –

+0

아무 이유없이, 순진하게 시도하는 것 외에 – jchemp

답변

2

: 당신의 텍스트 파일에 줄 바꿈 chacter이 vbNewLine을하지 않을 수 |

주 사용 세포로 다음, 개행 문자를 사용하여 라인에. 이 코드가 줄로 나뉘 지 않으면 처음부터 볼 수 있습니다.

는 poseted로, 다른 방법으로

Sub Sample() 
    Dim MyData As String 
    Dim lineData() As String, strData() As String, myFile As String 
    Dim i As Long, rng As Range 

    ' lets make it a little bit easier for the user 
    myFile = Application.GetOpenFilename("Text Files (*.txt), *.txt") 

    Open myFile For Binary As #1 
    MyData = Space$(LOF(1)) 
    Get #1, , MyData 
    Close #1 
    ' Split into wholes line 
    lineData() = Split(MyData, vbNewLine) 
    Set rng = Range("A5") 
    ' For each line 
    For i = 0 To UBound(lineData) 
     ' Split the line 
     strData = Split(lineData(i), "|") 
     ' Write to the sheet 
     rng.Offset(i, 0).Resize(1, UBound(strData) + 1) = strData 
    Next 
End Sub 

을 시도, 코드를 작성 아니라, 같은 .txt 파일, 텍스트

Sub Sample() 
    Dim fn As Integer 
    Dim MyData As String 
    Dim lineData As String, strData() As String, myFile As String 
    Dim i As Long, rng As Range 

    myFile = Application.GetOpenFilename("Text Files (*.txt), *.txt") 

    Set rng = Range("A5") 

    ' Lets not rely on Magic Numbers 
    fn = FreeFile 
    Open myFile For Input As #fn 
    i = 1 
    Do While Not EOF(fn) 
     Line Input #fn, lineData 
     strData = Split(lineData, "|") 
     rng.Cells(i, 1).Resize(1, UBound(strData) + 1) = strData 
     i = i + 1 
    Loop 
    Close #fn 
End Sub