複数のブック(CSV)の特定の列を一つのブックにまとめたい | |
---|---|
[196237] 複数のブック(CSV)の特定の列を一つのブックにまとめたい- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ VBA初心者 -(2024/06/18(15:46)) □U R L/ 初めまして。 VBA初心者で今勉強を頑張っています。 一度頑張って作ってみたのですが力が足りず作成できませんでした。 やりたいこととしては ・複数のCSVデータの特定の一列(B列のみ)を任意の一つのエクセルにまとめたいです。 ・CSVデータ名やシートの名前は連続性を持たせることが可能です(1.csv 2.csv 3.csv ,,,) 私なりに作ってみたのがこちらです。 Sub file_tensya() Dim A, B, C, D For i = 1 To 4 For j = 1 To 3000 With ActiveSheet A = ThisWorkbook.Path B = Format(i, "000") & ".csv" C = "Sheet1" 'シート名 D = Cells(j + 2, 15).Address 'o列範囲選択 '数式を使って、別ブックを参照 .Cells(j, i) = "='" & A & "\[" & B & "]" & C & " '!" & D '数式を値に変換 .Cells(j, i).Value = .Cells(j, i).Value End With Next Next End Sub 新しいプログラミングでも問題ないので回答のほうをお願いしたいです。 この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[196243] Re[1]: 複数のブック(CSV)の特定の列を一つのブックにまとめたい- ■記事引用/メール受信=OFF■ □投稿者/ マナ -(2024/06/20(16:52)) □U R L/ > C = "Sheet1" 'シート名 シート名は Format(i, "000") ではありませんか? |
[196246] Re[2]: 複数のブック(CSV)の特定の列を一つのブックにまとめたい- ■記事引用/メール受信=OFF■ □投稿者/ VBA初心者 -(2024/06/21(09:39)) □U R L/ Sub file_tensya() Dim A, B, C, D For i = 1 To 4 For j = 1 To 5 With ActiveSheet A = ThisWorkbook.Path B = Format(i, "000") & ".csv" C = Format(i, "000") D = Cells(j + 2, 15).Address 'o列範囲選択 '数式を使って、別ブックを参照 .Cells(j + 2, i) = "='" & A & "\[" & B & "]" & C & " '!" & D '数式を値に変換 .Cells(j + 2, i).Value = .Cells(j, i).Value End With Next Next End Sub これでも全部#REFになってしまい動きませんでした。 ,xlsxだと動いたのは確認してます。 この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[196247] Re[3]: 複数のブック(CSV)の特定の列を一つのブックにまとめたい- ■記事引用/メール受信=OFF■ □投稿者/ マナ -(2024/06/21(10:48)) □U R L/ > これでも全部#REFになってしまい動きませんでした。 でしたら、7ブックとしてして開いてコピペしてはどうですか。 |
[196279] Re[4]: 複数のブック(CSV)の特定の列を一つのブックにまとめたい- ■記事引用/メール受信=OFF■ □投稿者/ jindon -(2024/09/03(20:37)) □U R L/ >D = Cells(j + 2, 15).Address 'o列範囲選択 O列3行目からの読み込みですね? Sub test() Dim myDir$, fn$, t&, cols With Application.FileDialog(msoFileDialogFolderPicker) If .Show Then myDir = .SelectedItems(1) & "\" End With If myDir = "" Then Exit Sub fn = Dir(myDir & "*.csv") cols = [sequence(1,500,9,0)] cols(15) = 1 Application.ScreenUpdating = False With Sheets("sheet1") .UsedRange.Value = "" Do While fn <> "" t = t + 1 .Cells(1, t) = fn With .QueryTables.Add("TEXT;" & myDir & fn, .Cells(2, t)) .TextFileStartRow = 3 .TextFileCommaDelimiter = True .TextFileColumnDataTypes = cols .Refresh .Delete End With fn = Dir Loop .Columns.AutoFit End With Application.ScreenUpdating = True End Sub この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 ++++++++++++++++++++ OS ⇒Windows 11 Version⇒Office365 ++++++++++++++++++++ |
このトピックに書きこむ |
---|