| 複数のブック(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 ++++++++++++++++++++ | |
| このトピックに書きこむ |
|---|