こんにちは。よろしくおねがいいたします。
考えてらっしゃるのは、以下のようなことでしょうか?
VBA
1Option Explicit
2
3Sub ImportMultiCSVs()
4'n個のCSVを読み込む
5'それぞれのCSVはまったく同じ構造をしていて、100行2列である。
6'このCSVで、2列目のデータの100行を、
7'集計シート側の1列目に、上から下へ転記する。
8'次のCSVは、2列目に、その次のCSVは3列目に・・というふうに転記する。
9'結果的に、集計シートには、100行200列のデータができあがる、ということ。
10
11Dim InputFolder As String
12InputFolder = "C:¥temp¥InputFolder"
13
14Dim OutputSheet As Worksheet
15Set OutputSheet = ThisWorkbook.Worksheets("集計シート")
16
17Dim MyCSV As Variant
18Dim ArrCSV As Variant
19Dim I As Long, J As Long
20Dim x As Long
21
22'Jで集計シートを横方向にドリフトしていく
23J = 1
24
25MyCSV = Application.GetOpenFilename("CSVファイル,*.csv", Title:="CSVを選択してください", MultiSelect:=True)
26
27For x = LBound(MyCSV) To UBound(MyCSV)
28 'IでCSVファイルを上から下に読んでいく
29 I = 1
30 Open MyCSV(x) For Input As #1
31 Do Until EOF(1)
32 Line Input #1, MyCSV(x)
33 ArrCSV = Split(MyCSV(x), ",")
34 'ArrCSV(1)は、2列目のこと
35 OutputSheet.Cells(I, J).Value = ArrCSV(1)
36 I = I + 1
37 'CSVファイルの次の行へシフトします
38 Loop
39
40 'CSVファイルを閉じます
41 Close #1
42 J = J + 1
43Next x
44
45End Sub
46
47
これで僕のほうで実験してみて、うまくいきました。
このコードでは、特に"100個”とか”100行”とかを意識しないで機能します。
GetOpenFilenameのMultiSelect:=trueを使っています。
これで、任意のフォルダで、CTRL-Aしてあげれば、全部のCSVを一気に選択できます。
ポイントは Arr(1)でしょうか。これで「CSVの2カラム目」を指定しています。
ご参考になさってください。。