1つのフォルダに入っている沢山のCSVファイルのデータを
一つのエクセルシートにまとめたいのですが、
エクセルシートに1列ごとにまとめることができません。
どのようにすればいいでしょうか?
因みにフォルダを開いて閉じるまではできました。
Sub GetDataFromExcels()
'ステップ1|変数定義
Dim path As String
Dim cmax1 As Long, cmax2 As Long
Dim i As Long, j As Long, n As Long
Dim wb1 As Workbook, wb2 As Workbook
Dim ws1 As Worksheet, ws2 As Worksheet
Dim fs As Scripting.FileSystemObject
Dim basefolder As Scripting.Folder
Dim mysubfiles As Scripting.Files
Dim mysubfile As Scripting.File
'ステップ2|集約用エクセルの変数設定
Set wb1 = ThisWorkbook
Set ws1 = wb1.Worksheets("集約用シート")
n = 0
'ステップ3|FileSystemObjectの変数設定
path = ThisWorkbook.path & "\CSV111"
Set fs = New Scripting.FileSystemObject
Set basefolder = fs.GetFolder(path)
Set mysubfiles = basefolder.Files
'ステップ4|指定フォルダ内のファイルを繰り返しを読み込む
For Each mysubfile In mysubfiles
'ステップ5|ファイル拡張子を取得し
'エクセル(xls, xlsx, xlsm)のみ選択する
If fs.GetExtensionName(mysubfile) Like "[csv]*" Then
'ステップ6|エクセルファイルを開く
Application.DisplayAlerts = False
Workbooks.Open FileName:=mysubfile.path
Application.DisplayAlerts = True
Dim sheetName As String
sheetName = Worksheets(1).Name ' 1番目のシート名を取得
'ステップ7|開いたエクセルファイル(子エクセル)の変数設定
Set wb2 = ActiveWorkbook
Set ws2 = wb2.Worksheets(Worksheets(1).Name)
'ステップ8|子エクセルの最終行の値を取得
'cmax2 = ws2.Range("A1").End(xlToRight).Column
'ステップ9|子エクセルのデータを集約用エクセルに書き込む
'ws1.Range("A" & 1 & ":A" & 50).Value = ws2.Range("A" & 1 & ":A" & 50).Value
'For j = 1 To 100
'cmax1 = Cells(4, 1).End(xlToRight).Column + 1
'cmax1 = ws1.Range("A1").End(xlToRight).Column + 1
'ws1.Range(Cells(4, cmax1).Cells(500, camx1)).Value = ws2.Range("A1:A500").Value
ws1.Range("A" & 1 & ": A" & 50).Value = ws2.Range("A" & 1 & ":C" & 50).Value
'Next j
'ステップ10|子エクセルを閉じる
Application.DisplayAlerts = False
wb2.Close
Application.DisplayAlerts = True
Set wb2 = Nothing
cmax1 = ws1.Range("A1").End(xlToRight).Column + 1
End If
Next
'ステップ11|集約用エクセルを上書き保存する
Application.DisplayAlerts = False
wb1.Save
Application.DisplayAlerts = True
Set wb1 = Nothing
End Sub
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
STEP9
ws1.Range("A" & 1 & ": A" & 50).Value = ws2.Range("A" & 1 & ":C" & 50).Value
右辺と左辺が同じ大きさでないといけません。上記は、左辺:縦50×横1に対して、右辺:縦50×横3なのでエラーになります。
STEP8~9にリマークにした文が多数ありますが、cmax1やcmax2は有効化しないと上書きするだけです。
改行がすごいです。この状態でコード書いてないですよね?
No.1
- 回答日時:
行間を詰めないととても見にくくて解析が困難ですよ。
また、1列にまとめるというのはどういう事でしょう?
CSVデータなので恐らく複数項目のレコードが縦に並んでいるものと想定されますが、コードを見る限りでは3項目に対して複数行のデータがある様に見受けられます。
複数のCSVデータは一つのシートに続けて書き込んでも問題ありませんか?
現在のコードでは集約用シートのA1~A50に対象CSVのA1~C50を書き込むようになっていますが、これでは処理を繰り返してドンドン上書きされていきます。
現状プログラム的にエラー無く動いているのであればws1側の行を変数カウンタで設けて設定時に加算していくのが良いと判断します。
ただし張り付けるエリアはA~Cですね。
STEP8の最終行取得がコメントアウトされていますが、ここを生かして変数に設定し、現在のカウンタ+1~現在のカウンタ+取得した最終行でデータを設定後カウンタに加算して行けば良いと考えます。(未検証ですが・・・)
ご参考までに
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
既婚で現役のAV女優さんは居ま...
-
CDレコの曲の消し方を教えてく...
-
相対参照から絶対参照に変換す...
-
大昔から、クンニ、フェラって...
-
VBAが止まります。
-
射精したあとの匂いって他人に...
-
1日3回セックスって多いですか...
-
おっぱいを舐める
-
彼女をオカズにして抜くのって...
-
夫にセックスがないのなら他人...
-
彼とのエッチで、彼がイクのが...
-
先日彼氏とラブホに行ったら電...
-
2人でエッチできる場所を探して...
-
彼氏に顔射されて悲しいです
-
3Pを経験された方にお尋ねした...
-
女性のあそこが緩い、きついと...
-
初めて彼女とカーセックスをし...
-
彼のペニスが挿入時に柔らかく...
-
女性は電マ、ローター、バイブ...
-
絶倫について。 絶倫とは何を持...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
既婚で現役のAV女優さんは居ま...
-
VBA ソートすると、1、11、...
-
シンナーの夏型と冬型の違いは?
-
CDレコの曲の消し方を教えてく...
-
EXCELで3行を一組にして結合す...
-
Word 黒塗り部分の文字のみ削除...
-
VBAが止まります。
-
エクセル最終行の下に貼り付け
-
相対参照から絶対参照に変換す...
-
別ブックの空白行に転記
-
大昔から、クンニ、フェラって...
-
直線コネクタの中央にコネクタ...
-
scilabのエラーに関して
-
最適な組み合わせの自動計算
-
Galaxy s10とGalaxy A41はどち...
-
データの平均を1分値にまとめる...
-
ExcelVBAで指定文字(この場合...
-
エクセルのマクロについて
-
性欲自体はあるのにセックスで...
-
エクセルのマクロの作り方で、...
おすすめ情報