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

これは私が使用したコードです。テキストファイルをテーブルにインポートするたびに、テーブルの行と形式を含むテーブル上のすべてのものがクリアされるという問題が発生しました

他のセルに害を与えることなく、テキストファイルを目的の領域にインポートする方法があるかどうかを確認したい

4

1 に答える 1

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
于 2012-12-07T04:49:33.017 に答える