2012-04-09 5 views
0

Excel 2010では、すべてのテキストファイルのデータをフォルダから1つのワークシートにロードしたいと考えています。すべてのテキストファイルを1つのワークシートにロードしますか?

各シートには1つのテキストファイルのデータが必要です。

各シートは、最初の行のヘッダーで区切られています。

更新マクロ

Sub LoadTextFilesLoop() 
    Dim objFSO As Object 
    Dim objFolder As Object 
    Dim objFile As Object 
    Dim ws As Worksheet 

    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    'Get the folder object associated with the directory 
    Set objFolder = objFSO.GetFolder("C:\Export\") 
    'Loop through the Files collection 
    For Each objFile In objFolder.Files 
    NewFileImport (objFile.Name) 
    Next 
    'Clean up! 
    Set objFolder = Nothing 
    Set objFile = Nothing 
    Set objFSO = Nothing 
End Sub 

Sub NewFileImport(FileName) 
    Sheets.Add After:=Sheets(Sheets.Count) 
    With ActiveSheet.QueryTables.Add(Connection:= _ 
     "TEXT;C:\Export\FileName", _ 
     Destination:=Range("$A$1")) 
     .Name = FileName 
     .FieldNames = True 
     .RowNumbers = False 
     .FillAdjacentFormulas = False 
     .PreserveFormatting = True 
     .RefreshOnFileOpen = False 
     .RefreshStyle = xlInsertDeleteCells 
     .SavePassword = False 
     .SaveData = True 
     .AdjustColumnWidth = True 
     .RefreshPeriod = 0 
     .TextFilePromptOnRefresh = False 
     .TextFilePlatform = 65001 
     .TextFileStartRow = 1 
     .TextFileParseType = xlDelimited 
     .TextFileTextQualifier = xlTextQualifierDoubleQuote 
     .TextFileConsecutiveDelimiter = False 
     .TextFileTabDelimiter = False 
     .TextFileSemicolonDelimiter = False 
     .TextFileCommaDelimiter = False 
     .TextFileSpaceDelimiter = False 
     .TextFileOtherDelimiter = "|" 
     .TextFileColumnDataTypes = Array(1, 1, 1) 
     .TextFileTrailingMinusNumbers = True 
     .Refresh BackgroundQuery:=False 
    End With 
End Sub 

ループは、データをロードしていません。

私は各ファイルのNumber of Columnsをどのように得ることができるか把握する必要があります。

.TextFileColumnDataTypes = Array(1, 1, 1) 

この行は、このファイルの3つの列を示します。これは、ファイルの列に基づいて異なります。

答えて

0

最後に私はこれを得ました ここに私のマクロです。

Sub LoadTextFilesLoop() 
Dim objFSO As Object 
    Dim objFolder As Object 
    Dim objFile As Object 
    Dim ws As Worksheet 

    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    'Get the folder object associated with the directory 
    Set objFolder = objFSO.GetFolder("C:\Export\") 
    'Loop through the Files collection 
    For Each objFile In objFolder.Files 
    NewFileImport (objFile.Name) 
    Next 
    'Clean up! 
    Set objFolder = Nothing 
    Set objFile = Nothing 
    Set objFSO = Nothing 
    End Sub 

Sub NewFileImport(FileName) 
Dim fName As String 
fName = Left(FileName, Len(FileName) - 4) 
Sheets.Add After:=Sheets(Sheets.Count) 
    With ActiveSheet.QueryTables.Add(Connection:= _ 
     "TEXT;C:\Export\" + FileName, _ 
     Destination:=Range("$A$1")) 
     .Name = fName 
     .FieldNames = True 
     .RowNumbers = False 
     .FillAdjacentFormulas = False 
     .PreserveFormatting = True 
     .RefreshOnFileOpen = False 
     .RefreshStyle = xlInsertDeleteCells 
     .SavePassword = False 
     .SaveData = True 
     .AdjustColumnWidth = True 
     .RefreshPeriod = 0 
     .TextFilePromptOnRefresh = False 
     .TextFilePlatform = 65001 
     .TextFileStartRow = 1 
     .TextFileParseType = xlDelimited 
     .TextFileTextQualifier = xlTextQualifierDoubleQuote 
     .TextFileConsecutiveDelimiter = False 
     .TextFileTabDelimiter = False 
     .TextFileSemicolonDelimiter = False 
     .TextFileCommaDelimiter = False 
     .TextFileSpaceDelimiter = False 
     .TextFileOtherDelimiter = "|" 
     .TextFileColumnDataTypes = Array(1, 1, 1) 
     .TextFileTrailingMinusNumbers = True 
     .Refresh BackgroundQuery:=False 
    End With 
    ActiveSheet.Select 
    ActiveSheet.Name = Left(fName, 31) 
End Sub 
関連する問題