2017-01-25 17 views
0

私は初心者です、新しいワークシートの列にcsvファイルから行をコピーして、次の操作を行いコードを記述する必要があります:フォルダVBAは:VBAで

2 - プットに

の1-取り出すすべてのCSVファイルを新しいワークシートの最初の行のファイル名。

、3-コピーすべての列のタイトル(最初の行)CSVファイルから

、4-新しい作業シートの各ファイル名の下に1列に貼り付けます。

私は範囲を使用する必要があることを知っていますが、私はそれを使用する方法が混乱しています。

これは私がcsvファイルを取得するために行ったことです。私は列に行をコピーすると問題を抱えて:

Dim CSVPath 
Dim FS 
Dim file 
Dim wkb As Excel.Workbook 
Dim ResultsSheet As Worksheet 
Dim RowPtr As Range 
Dim CSVUsed As Range 

Set ResultsSheet = Sheet1 

'Clear the results sheet 
ResultsSheet.Cells.Delete 

Set FS = CreateObject("Scripting.FileSystemObject") 

'The CSV files are stored in a "CSV" subfolder of the folder where 
'this workbook is stored. 
CSVPath = ThisWorkbook.Path & "\CSV" 

If Not FS.FolderExists(CSVPath) Then 
    MsgBox "CSV folder does not exist." 
    Exit Sub 
End If 

For Each file In FS.GetFolder(CSVPath).Files 
    If Right(file.Name, 3) = "csv" Then 'Only look at files with .csv extension 
     Set wkb = Application.Workbooks.Open(file.Path) 

Next 

をしても、私はループがこのようなものでなければなりません知っている:任意のヘルプは

答えて

1

のようなものを試してみて高く評価され

FinalRow = Cells(Rows.Count, 1).End(xlUp).Row 

    For x = 2 To FinalRow 

Dim wb1 As Workbook, wb2 As Workbook 
Dim colnum 
Dim arr1 
Dim range2 As Range 

colnum = 20 
Set wb2 = ThisWorkbook 

Set range2 = wb2.Worksheets("Sheet1").Range("A1") 'wherever I want to paste my data to 
For Each file In fs.getfolder(CSVPath).file 
     If Right(file.Name, 3) = "csv" Then 
      Set wb1 = Application.Workbooks.Open(file.Path) 
      arr1 = wb1.Worksheets("WHATEVER_ITS_NAME_IS").Range("A1").resize(1, colnum).Value 
      rowlen = UBound(arr1, 1) - LBound(arr1, 1) + 1 
      collen = UBound(arr1, 2) - LBound(arr1, 2) + 1 

      range2.Resize(rowlen, collen).Value = arr1 
     End If 
Next 

この猫をスキンする方法はたくさんあります。私のコードが動作しているかどうかは分かりませんが、おそらくこれが役に立ちます。通常、私はすべてのセルをループしたくありません。 VBAでは、この種のループは非常に遅いです。一度にアレイ全体をコピーするほうがよいでしょう。 Rangeオブジェクトから配列データを設定/取得するにはRange.Valueプロパティを使用してください。

+0

ご回答ありがとうございます。私は質問があった。範囲: "A1:Z1")値 私の列の数は(A1:Z1)以上です。最後のセルの最後? – Navid

+0

確かに、range.resize(rows、cols)を試してみてください。 MSDNは、すべてのExcel VBA関数、オブジェクト、メソッドの素晴らしいリファレンスです。 – johnzilla