2012-03-23 14 views
2

私は約600のテキストファイルを持っています。各ファイルには2列があり、space delimitedです。同じExcelスプレッドシートにすべてをインポートできる方法はありますか?複数のテキストファイルをExcelにインポートする

私はこのことについての投稿を見て、次のスクリプトを使用しましたが、それは私のためには機能しませんでした。それは私に助けをUser-defined type not defined

Sub ReadFilesIntoActiveSheet() 
Dim fso As FileSystemObject 
Dim folder As folder 
Dim file As file 
Dim FileText As TextStream 
Dim TextLine As String 
Dim Items() As String 
Dim i As Long 
Dim cl As Range 

' Get a FileSystem object 
Set fso = New FileSystemObject 

' get the directory you want 
Set folder = fso.GetFolder("D:\mypath\") 

' set the starting point to write the data to 
Set cl = ActiveSheet.Cells(1, 1) 

' Loop thru all files in the folder 
For Each file In folder.Files 
    ' Open the file 
    Set FileText = file.OpenAsTextStream(ForReading) 

    ' Read the file one line at a time 
    Do While Not FileText.AtEndOfStream 
     TextLine = FileText.ReadLine 

     ' Parse the line into | delimited pieces 
     Items = Split(TextLine, "|") 

     ' Put data on one row in active sheet 
     For i = 0 To UBound(Items) 
      cl.Offset(0, i).Value = Items(i) 
     Next 

     ' Move to next row 
     Set cl = cl.Offset(1, 0) 
    Loop 

    ' Clean up 
    FileText.Close 
Next file 

Set FileText = Nothing 
Set file = Nothing 
Set folder = Nothing 
Set fso = Nothing 

End Sub 

`

感謝をgived!

+0

「Windo以下の2行を変更してください: 'Dim fso As FileSystemObject'と' Dim FileText As TextStream'を '... As Object'に変更し、' Set fso = New FileSystemObject'を 'Set fso = CreateObject( "Scripting.FileSystemObject") '。また、以下の@mkingstonに言及した変更を加えてください。 – transistor1

答えて

3

ほとんどの場合、Windows Scripting Host Object Modelへの参照を設定する必要があります。

これを行うには、Visual Basic Editorからツール/参照を選択し、次にスクロールして「Windows Script Host Object Model」を探します。このボックスにチェックを入れ、OKを押します。今度はもう一度コードを実行してみてください。

さらに、データが2つの列に分割され、スペースで区切られていることがわかりました。これにより

Items = Split(TextLine, "|") 

:あなたは次の行に区切り文字を置き換える必要があります

Items = Split(TextLine, " ") 

最後に、あなたはこれを置き換えるオフにわずかに良いだろう:

For i = 0 To UBound(Items) 
    cl.Offset(0, i).Value = Items(i) 
Next 

でこれは:

cl.Resize(1,UBound(Items)-LBound(Items)+1).value = Items 
+0

どうすればいいですか?(私はビジュアルベーシックについて知識がありません) – dawnoflife

+0

申し訳ありません!改正された。 – mkingston

+0

ツール - >参照を選択すると、このオプションは私にはアクセスできません。強調表示されていない/クリック不可能な<ここに正しい用語を挿入>を意味します。ワークシートの 'Alt + F11'を押した後、' add new module'オプションを選択してコードを貼り付けました。助けてくれてありがとう! – dawnoflife

関連する問題