2016-08-24 9 views
0

* .csvファイルを1つのフォルダからマージする方法はありますか?マクロを使用してCSVファイルをマージする

同じ構造の(* &という見出しの)* .csvファイルが多数あり、その内容を1つのシートにマージする必要があります。

それほど難しくありません。しかし、あるテーブルからコンテンツを追加するときに、このデータをコピーしたテーブルの名前で新しいカラムを追加する必要があります。

お願いします。

ありがとうございました!

+0

イムはあなただけVBAでこれをやりたいと思っていると仮定が、これはPythonでずっと容易になるだろうか? –

+0

Pythonを最初にインストールしなければならないと考えると、それほど簡単ではないと思います。あなたが持っているものすべてがハンマーのようなものであれば、すべてが爪のように見えます。 @ケビンから答えのシンプルさを考えてみてください。 –

+0

私はVBAでこれをしなければなりません、それは問題です。これは、ビジネスユーザーにとっては単に「ツール」でなければなりません。 – Vestyak

答えて

0

これはどのようにこの問題を解決するかのように思われます。それはすべてのcsvファイルの内容をマージし、2番目のファイルからヘッダを削除します! :)しかし、まだソースファイルの名前を追加することでその問題を解決する必要があります。

ます。Option Explicit

サブImportCSV()

Dim strSourcePath As String 
Dim strDestPath As String 
Dim strFile As String 
Dim strData As String 
Dim x As Variant 
Dim Cnt As Long 
Dim r As Long 
Dim c As Long 

Application.ScreenUpdating = False 

'Change the path to the source folder accordingly 
strSourcePath = "C:\Path\" 

If Right(strSourcePath, 1) <> "\" Then strSourcePath = strSourcePath & "\" 

'Change the path to the destination folder accordingly 
strDestPath = "C:\Path\" 

If Right(strDestPath, 1) <> "\" Then strDestPath = strDestPath & "\" 

strFile = Dir(strSourcePath & "*.csv") 

Do While Len(strFile) > 0 
    Cnt = Cnt + 1 
    If Cnt = 1 Then 
     r = 1 
    Else 
     r = Cells(Rows.Count, "A").End(xlUp).Row + 1 
    End If 
    Open strSourcePath & strFile For Input As #1 
     If Cnt > 1 Then 
      Line Input #1, strData 
     End If 
     Do Until EOF(1) 
      Line Input #1, strData 
      x = Split(strData, ",") 
      For c = 0 To UBound(x) 
       Cells(r, c + 1).Value = Trim(x(c)) 
      Next c 
      r = r + 1 
     Loop 
    Close #1 
    Name strSourcePath & strFile As strDestPath & strFile 
    strFile = Dir 
Loop 

Application.ScreenUpdating = True 

If Cnt = 0 Then _ 
    MsgBox "No CSV files were found...", vbExclamation 

End Subの

+0

良いヒントありがとう:) – Vestyak

1

それにアプローチする方法はいくつか(例:SO 39045638)があり、私は個人的にLOCは、CSVファイルのディレクトリで以下に類似の.batファイルを、使用

。ただし、これは集計ファイルの削除を処理しません。繰り返しヘッダーも処理しないので、最終的なcsvを編集して削除する必要があります。

@ECHO OFF 
Set loc=C:\Test\ 
Copy %loc%*.csv %loc%\Aggregate.csv 
+0

ねえケビン、私はあなたに同意します。私は同じ方法でそれをやったが、バットファイルを開始するのはビジネスユーザーにとっては難しいようだ:)全体的な操作のためには1つのマクロでなければならない。 – Vestyak

+0

どのようにしてバットファイルをダブルクリックするのがマクロを実行するよりも難しいですか?具体的に言えば、これは、回答を提起する前にすべての制約を理解するために使用することができます –

関連する問題