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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
既婚で現役のAV女優さんは居ま...
-
CDレコの曲の消し方を教えてく...
-
エクセル最終行の下に貼り付け
-
VBAが止まります。
-
コマンドの内容をお教えください。
-
直線コネクタの中央にコネクタ...
-
シンナーの夏型と冬型の違いは?
-
相対参照から絶対参照に変換す...
-
VBA ソートすると、1、11、...
-
射精したあとの匂いって他人に...
-
1日3回セックスって多いですか...
-
2人でエッチできる場所を探して...
-
彼女をオカズにして抜くのって...
-
おっぱいを舐める
-
彼とのエッチで、彼がイクのが...
-
先日彼氏とラブホに行ったら電...
-
夫にセックスがないのなら他人...
-
初めて彼女とカーセックスをし...
-
女性のあそこが緩い、きついと...
-
絶倫について。 絶倫とは何を持...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
既婚で現役のAV女優さんは居ま...
-
VBA ソートすると、1、11、...
-
CDレコの曲の消し方を教えてく...
-
相対参照から絶対参照に変換す...
-
シンナーの夏型と冬型の違いは?
-
大昔から、クンニ、フェラって...
-
VBAが止まります。
-
EXCELで3行を一組にして結合す...
-
Word 黒塗り部分の文字のみ削除...
-
データの平均を1分値にまとめる...
-
エクセルのVBAでTTESTがエラー...
-
直線コネクタの中央にコネクタ...
-
別ブックの空白行に転記
-
bluetoothのclass1とclass2の互...
-
Excelで抽出・連続印刷したいです
-
ExcelVBAで指定文字(この場合...
-
最適な組み合わせの自動計算
-
VBA AB列”3000”以上の数字の行...
-
エクセル最終行の下に貼り付け
-
YmobileからSoftbankに乗り換え...
おすすめ情報