2017-08-05 6 views
0

私はExcelファイルにテキストファイルをインポートするために使用しようとしている非常に単純なvbaマクロを持っています。テキストファイルには、指定された名前と、可変数の行を持つ単一のデータ列のみがあります。VBA Excel Loopでテキストファイルをインポートする

私がする必要があるのは、 です。1)特定のワークシート内の特定のセルからファイル名を読み込みます。 2)ファイルから1行にすべてのデータ行をインポートします。

これは私がこれまで持っているものです。

Sub Import() 

fname = Range("E3") 
datadir = Application.ActiveWorkbook.Path 
fpath = datadir & "\" & fname 

Open fpath For Input As #1 

Do Until EOF(1) 
    Line Input #1, LineFromFile 
    Range("E3") = LineFromFile 
Loop 

Close #1 
End Sub 

それはセルE3に入力したファイル名を使用して、テキストファイルとインポートデータを開くんが、それはデータファイルからのみの非常に最後の値を出力します。私がしようとしているものを

5 
4.24E-09 
15 
4.32E-09 
25 
4.41E-09 
35 
4.49E-09 
45 
4.58E-09 
55 
4.67E-09 

とのan example: テキストファイルの内容:私は、バックグラウンドで開いているスプレッドシートでデバッガを実行すると、私は

生データとアウト希望プット例を見ることができます最終的なスプレッドシートを見えるようにする。理想的には、「インポート」ボタンを1回クリックするだけで、1つのマクロを使用して複数のファイルを一度にインポートしたいと考えています。私は最初のインポートループで助けを得ることができますが、私は感謝します!

答えて

0

各行の値は同じセルに割り当てられます。単純に、行が読み込まれるたびに変数(x)をインクリメントして、プロパティを使用して、オフセットの新しい行をRange("E3")に書き込んでください。

レンジ( "E3")。オフセット(X)= LineFromFile

Sub Import() 
    Dim x As Long 

    fname = Range("E3") 
    datadir = Application.ActiveWorkbook.path 
    fpath = datadir & "\" & fname 

    Open fpath For Input As #1 

    Do Until EOF(1) 
     Line Input #1, LineFromFile 
     Range("E3").Offset(x) = LineFromFile 
     x = x + 1 
    Loop 

    Close #1 
End Sub 
+0

ありがとう、私はあなたの提案を試して、彼らは問題を解決しました! – Jess

0

ループでは、読み込んだ新しいファイル行の値をセルE3に繰り返し割り当てるだけです。ファイルが100行で終了すると、E3の値を99回上書きして、最後に読み取った値をE3に上書きします。

E3をE4、E5などに変更する追加コードを作成します。

ヒント:

  • がインサイド3.
  • に、数値変数外ループのを割り当てるループを確認してくださいインクリメント VA毎回1人ずつ
  • ファイル値を文字列連結に割り当てるためにセル参照を作成して、文字列 "E"の末尾に数値変数を取得します。これにより、ループの各パスで "E3"、 "E4"、 "E5"などの異なる上昇値が得られます。
+0

それはプログラミングループに来るとき、私は常にロジック誤解し、ヒントをいただき、ありがとうございます。 >。< – Jess

関連する問題