2016-11-04 74 views
1

複数のcsvファイルを、作成したExcelテンプレートの複数のシートにインポートする自動テンプレートを作成しようとしています。複数のCSVファイルをExcelの複数のシートにインポートするVBA

これまでのところ、Resultsという名前のテーブルとLogin IDという名前の列があるテンプレートが1つあります。私は、シートを自動的に作成して名前を付けるために次のスクリプトを書いた。私のテーブルのデータが7

​​

行に始まり、私はインポートする必要があり、各CSVファイルは、同様のログインIDのの一つにちなんで命名された、と彼らは私が作成していますテンプレートと同じフォルダに配置されます。

CSVファイルは、日付と時刻を最初の列から区切るために少し修正する必要があります。

' Columns("A:A").Select 
' Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove 
' Columns("B:B").Select 
' Selection.Cut Destination:=Columns("A:A") 
' Columns("A:A").Select 
' Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _ 
'  FieldInfo:=Array(Array(0, 1), Array(10, 1)), TrailingMinusNumbers:=True 
' Columns("A:A").Select 
' Selection.NumberFormat = "mm/dd/yy;@" 
' Columns("B:B").Select 
' Columns("B:B").EntireColumn.AutoFit 
' 

任意のアイデア私は正しい軌道に乗っていますかどのように最善の私のCSVインポート苦境を解決する場合もいただければ幸いです。

+0

もっと説明できますか?インポートする必要があるCSVファイルごとにシートを作成したいとします。それは実際にすべての.csvファイルを含むフォルダをループしていて、不確実な各指定シートに1つずつインポートしていますか?どうやって始めたらよいか分からないなら、私は 'QueryTables.Add'メソッド – kpg987

答えて

0

これは、あなたがしたいことをします!

Sub CombineTextFiles() 

    Dim FilesToOpen 
    Dim x As Integer 
    Dim wkbAll As Workbook 
    Dim wkbTemp As Workbook 
    Dim sDelimiter As String 

    On Error GoTo ErrHandler 
    Application.ScreenUpdating = False 

    sDelimiter = "|" 

    FilesToOpen = Application.GetOpenFilename _ 
     (FileFilter:="CSV Files (*.csv), *.csv", _ 
     MultiSelect:=True, Title:="CSV Files to Open") 

    If TypeName(FilesToOpen) = "Boolean" Then 
     MsgBox "No Files were selected" 
     GoTo ExitHandler 
    End If 

    x = 1 
    Set wkbTemp = Workbooks.Open(Filename:=FilesToOpen(x)) 
    wkbTemp.Sheets(1).Copy 
    Set wkbAll = ActiveWorkbook 
    wkbTemp.Close (False) 
    wkbAll.Worksheets(x).Columns("A:A").TextToColumns _ 
     Destination:=Range("A1"), DataType:=xlDelimited, _ 
     TextQualifier:=xlDoubleQuote, _ 
     ConsecutiveDelimiter:=False, _ 
     Tab:=False, Semicolon:=False, _ 
     Comma:=False, Space:=False, _ 
     Other:=True, OtherChar:="|" 
    x = x + 1 

    While x <= UBound(FilesToOpen) 
     Set wkbTemp = Workbooks.Open(Filename:=FilesToOpen(x)) 
     With wkbAll 
      wkbTemp.Sheets(1).Move After:=.Sheets(.Sheets.Count) 
      .Worksheets(x).Columns("A:A").TextToColumns _ 
       Destination:=Range("A1"), DataType:=xlDelimited, _ 
       TextQualifier:=xlDoubleQuote, _ 
       ConsecutiveDelimiter:=False, _ 
       Tab:=False, Semicolon:=False, _ 
       Comma:=False, Space:=False, _ 
       Other:=True, OtherChar:=sDelimiter 
     End With 
     x = x + 1 
    Wend 

ExitHandler: 
    Application.ScreenUpdating = True 
    Set wkbAll = Nothing 
    Set wkbTemp = Nothing 
    Exit Sub 

ErrHandler: 
    MsgBox Err.Description 
    Resume ExitHandler 

End Sub 
関連する問題