2012-12-07 1 views
0
Sub ImportTextFile() 
Dim rPaht As String 
Dim rFileName As String 
rPaht = Sheet1.Range("C9") 
rFileName = Sheet1.Range("C10") 
Range("G8").CurrentRegion.Offset(1, 0).Clear 

With ActiveSheet.QueryTables.Add(Connection:= _ 
    "TEXT;" & rPaht & "\" & rFileName & ".txt", Destination:= _ 
    Range("$g$9")) 
    .Name = Sheet1.Range("C10").Value 
    .TextFilePlatform = 874 
    .TextFileStartRow = 1 
    .TextFileParseType = xlDelimited 
    .TextFileOtherDelimiter = ":" 
    .Refresh BackgroundQuery:=False 
End With 
Sheet1.Range("C9") = rPaht 
Sheet1.Range("C10") = rFileName 
End Sub 

이것은 내가 사용하는 코드입니다. 나는 테이블에 텍스트 파일을 가져올 때마다 테이블에있는 모든 것을 지우고 테이블 라인과 포맷을 포함 할 때마다 문제가 발생합니다.Excel로 텍스트 파일 가져 오기 새로 고침없이 테이블에 VBA를 사용하여 멀리 떨어져

어쨌든 우리가 원하지 않는 영역으로 텍스트 파일을 가져올 지 물어보고 싶습니다. 다른 셀에 해를 끼친다

답변

0

대신 파일 스크립팅 개체를 사용하여 텍스트 파일을 읽습니다. 이 예제에서는 후기 바인딩을 사용하지만 초기 바인딩을 수행 할 수도 있습니다. 변수를 읽고 그 변수를 출력 범위로 설정하는 것이 더 효율적입니다.

Sub ImportTextFile() 
    Dim rPath As String, rFileName As String, fs As Object, fsFile As Object, iLine As Integer 

    rPath = Sheet1.Range("C9") 
    rFileName = Sheet1.Range("C10") 
    Range("G8").CurrentRegion.Offset(1, 0).Clear 

    'Use filescripting object to open the file on Windows 
    Set fs = CreateObject("Scripting.FileSystemObject") 
    Set fsFile = fs.OpenTextFile(rPath & "\" & rFileName, 1, False) 

    'Loop through the file 
    Do While fsFile.AtEndOfStream <> True 
     iLine = iLine + 1 

     Sheet1.Cells(iLine + 8, 1) = VBA.Split(fsFile.ReadLine, vbTab) 
    Loop 

    Set fs = Nothing 
    Set fsFile = Nothing 
End Sub 
관련 문제