複数のCSVから、特定範囲のセルを、1つのワークシートにコピー/ペーストする方法
◆概要
複数のCSVから、特定範囲のセルを、1つのワークシートにコピー/ペーストする
VBAのコードを記載する。
◆VBAの機能
1.Alt + F8 → 実行 で、VBA実行。
1.ファイル選択画面が出る。内容をコピー/ペーストしたいCSVが
複数選択できる。
2.選択した全てのCSV内のセルB13~B20の範囲が
コピーされ、新しく生成されたシート「Data」の
B3,C3,D3,E3・・・に順番にペーストされる。
3.CSVが閉じられる。
◆コード___________________________________________________________________________
Sub csvcpy()
'0.VBAで使用する変数の定義
Dim PathGet As Variant
Dim DataSheet As Worksheet 'DataSheet = コピー元のファイル(csvファイル)
Dim NewSheet As Worksheet 'NewSheet = ペースト先のシート(シート"VF")
Dim SheetName As String
'1.CSVファイルの選択画面を出す
PathGet = Application.GetOpenFilename( _
FileFilter:="CSVファイル(*.csv),*.csv", _
Title:="CSVファイルの選択", MultiSelect:=True)
'2.ファイルパスが取得できない場合→処理終了
If IsArray(PathGet) = False Then
Exit Sub
End If
'3.ファイルパスが取得できた場合→メイン処理に進む
'3-1.ペースト先のシートを準備
Set NewSheet = Worksheets.Add() '新しいワークシートを生成
NewSheet.Name = "Data" 'ワークシート名にDataと記入
C1 = 2
'3-2.選択したCSVファイルを開く
If IsArray(PathGet) Then
For Each Filename In PathGet
SheetName = Dir(Filename)
Workbooks.Open Filename:=Filename
Set DataSheet = ActiveSheet
'3-3.CSVのコピー範囲指定→コピー→ペースト
DataSheet.Range(Cells(13, 2), Cells(20, 2)).Copy Destination:=NewSheet.Cells(3, C1)
C1 = C1 + 1
'3-4.CSVを閉じる
ActiveWorkbook.Close SaveChanges:=False
'3-5.次のCSVの処理に移る(3-2~繰り返し)
Next
End If
End Sub
____________________________________________________________________________________
◆コピー範囲の変更
・範囲の頭:Cells(13,2)がコピー範囲の頭の位置。
ここを、任意のセルに変えればよい。
・範囲の末尾:Cells(20,2)がコピー範囲の頭の位置。
ここを、任意のセルに変えればよい。
※Cells(13,2)=13行目,2列目のセル=セルB13なので、
セルD13にしたければ、Cells(13,4)にする。
セルB8にしたければ、Cells(8,2)にする。
◆ペースト位置の変更
・ペースト先は、ctrl + Vでのペーストと同じく、
先頭のセルのみ指定している。
Cells(3, C1)がペースト先の位置なので、ここを
任意のセルに変えればよい。