
【やりいた事】下記画像をご覧ください
◆◆◆4つのCSVシートのデータを、別ブックの4つのシートへそれぞれコピーしたいです◆◆◆
※CSVはexcelブックに置き換えて考えて頂いてもOKです。同じです
4つのCSVシートを別ブックの1つのシートへコピーするコードは出来ました
以下の参考コード❶をご覧ください
しかし、やりたい事は、4つのファイルデータを1つのシートではなく、4つのシートへ
コピーする方法です
コピーの方法は、以下です
ws.Range("A1").CurrentRegion.Copy
貼付けは、4つのシートのそれぞれの A1セル にてOKです
最後に、参考コード❷は、シートを1番目から4番目まで順番に移動するコードです
移動するたびに、作業のコードを入れる事も出来ます
ここに、4つのファイルデータの内の1つをコピペするコードを入れてもうまく
いくと思います
コードならびにアドバイスのご教授お願いします
【ファイルパス】コピー先
"C:\Users\user\Documents\web\最新配列.xlsm"
※4つのファイルのデータをコピーしたいファイル
※シート名⇒Sheet1、Sheet2、Sheet3、Sheet4、
【ファイルパス】※4つのファイル
"C:\Users\user\Documents\web\ダウンロード場所\a_20250529123939.csv"
※シートは1つしかない。名前は不規則
"C:\Users\user\Documents\web\ダウンロード場所\a_20250529123940.csv"
※シートは1つしかない。名前は不規則
"C:\Users\user\Documents\web\ダウンロード場所\a_20250529123941.csv"
※シートは1つしかない。名前は不規則
"C:\Users\user\Documents\web\ダウンロード場所\a_20250529123942.csv"
※シートは1つしかない。名前は不規則
【参考コード❶】4つのファイルデータを1つのファイルへ集約
Sub 順番。4つのファイルデータを1つのファイルへ集約()
Dim folder_path As String
Dim fso As FileSystemObject
Dim Folder As Folder
Dim File As File
Dim wb As Workbook
' フォルダのパスを指定
folder_path = "C:\Users\user\Documents\web\ダウンロード場所\"
' FileSystemObjectを作成
Set fso = New FileSystemObject
Set Folder = fso.GetFolder(folder_path)
' フォルダ内のファイルを順次処理
For Each File In Folder.Files
If File.Name Like "*.csv" Then
' ファイルを開く
Set wb = Workbooks.Open(File.Path)
Set ws = wb.Worksheets(1)
' 1つのシートに4つのファイルデータをコピー貼り付け
lastrow = ThisWorkbook.Worksheets("集約").Cells(Rows.Count, 1).End(xlUp).Row
ws.Range("A1").CurrentRegion.Copy
ThisWorkbook.Worksheets("集約").Cells(lastrow + 1, 1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
wb.Close SaveChanges:=True
End If
Next File
End Sub
【参考コード❷】
4つのシートに順番にバトンタッチし、作業をする。作業は、4つのフアィルデータをそれぞれコピペしたい
Sub sheetarrayの配列()
Dim allsheet(3) As Variant
allsheet(0) = "Sheet1"
allsheet(1) = "Sheet2"
allsheet(2) = "Sheet3"
allsheet(3) = "Sheet4"
Dim i As Long
Dim ws As Worksheet
For i = 0 To 3
Set ws = ThisWorkbook.Worksheets(allsheet(i))
MsgBox allsheet(i)
●●●●●●●●●●●●●●●●●●●●●●●●●●
ここに4つのファイルのデータをコピーするデータを
開き、コピペするコードを貼り付けるコードを入れたい
●●●●●●●●●●●●●●●●●●●●●●●●●●
Next
End Sub

No.2ベストアンサー
- 回答日時:
Sheet1~Sheet4ではなく、シート①~シート④にコピーするようにしました。
Const Folder_path As String = "D:\goo\data\ダウンロード場所"
は、あなたの環境に合わせてください。
CSVファイルが5個以上の場合は、エラーになります。
>データは更新日時順にて貼りつきました
>そのようなルールにて貼りつく物なのでしょうか?
回答:dir関数を実行すると、ファイル名の昇順にファイル名を取得するので、そのようになります。ファイル名がダウンロード順になっているので、
更新日時順にコピーされます。
--------------------------------------------------------
Sub シートコピー()
Const Folder_path As String = "D:\goo\data\ダウンロード場所"
Dim fname As String
Dim wb As Workbook
Dim rg As Range
Dim sno As Long: sno = 0
Dim sname As String
Dim name_tbl As Variant
name_tbl = Array("シート①", "シート②", "シート③", "シート④")
fname = Dir(Folder_path & "\*.csv")
Do While fname <> ""
Set wb = Workbooks.Open(Folder_path & "\" & fname)
Set rg = wb.Worksheets(1).Cells(1, 1).SpecialCells(xlLastCell)
sname = name_tbl(sno)
wb.Worksheets(1).Cells(1, 1).Resize(rg.Row, rg.Column).Copy Destination:=ThisWorkbook.Worksheets(sname).Cells(1, 1).Resize(rg.Row, rg.Column)
wb.Close
sno = sno + 1
fname = Dir()
Loop
End Sub
tatsumaru77様
全て、うまく出来ました。大変、大変、ありがとうございます
1回、時分の求めていた物は全て実装できました
本コードをさらにブラッシュアップさせて頂く為
本サイト新規から補足の質問させて頂きます
お時間ありましたら、宜しくお願いします
【参考ツール】
コードは文字数オーバーにて掲載不可の為、新規質問へのせます
No.1
- 回答日時:
以下のようにしてください。
使用時の注意事項
1.CSVファイルの場所
Const Folder_path As String = "D:\goo\data\ダウンロード場所"
は、あなたの環境にあわせて適切に設定してください。
2.コピー先のシート名は
"Sheet" + 連番(1~) になります。
csvファイルが5個の時は、Sheet1~Sheet5へコピーします。
csvファイルが1個の時は、Sheet1のみへコピーします。
--------------------------------------------------
Option Explicit
Sub シートコピー()
Const Folder_path As String = "D:\goo\data\ダウンロード場所"
Dim fname As String
Dim wb As Workbook
Dim rg As Range
Dim sno As Long: sno = 1
Dim sname As String
fname = Dir(Folder_path & "\*.csv")
Do While fname <> ""
Set wb = Workbooks.Open(Folder_path & "\" & fname)
Set rg = wb.Worksheets(1).Cells(1, 1).SpecialCells(xlLastCell)
sname = "Sheet" & sno
wb.Worksheets(1).Cells(1, 1).Resize(rg.Row, rg.Column).Copy Destination:=ThisWorkbook.Worksheets(sname).Cells(1, 1).Resize(rg.Row, rg.Column)
wb.Close
sno = sno + 1
fname = Dir()
Loop
End Sub
tatsumaru77 様
コードうまく動きました
大変、大変、ありがとうございます
補足質問させていただきます
【質問1】
大変恐縮ですがシート名は以下のとおり実際固定の名前です
今回のご教授のコードと同じ効果がある
良いコードはありますか?
コードorアドバイスお願いします
【シート名】
集約シートA
集約シートB
シート①
シート②
シート③
シート④
【条件】
CSVデータは1個~4個となります。名前は毎回違います
【質問2】
データは更新日時順にて貼りつきました
そのようなルールにて貼りつく物なのでしょうか?
なお、更新日順に、シート①⇒シート②・・・と
貼りつき希望だった為、今回の良かったです
CSVデータはWEBからダウンロードします
DLした時間順にて貼り付けたいという意味です
【参考コード。少し変更しました】
Sub シートコピー()
'CSVファイルが格納してあるパス
Const Folder_path As String = "C:\Users\2020\OneDrive\マクロ\ソクコム\ダウンロード場所"
Dim fname As String
Dim wb As Workbook
Dim rg As Range
Dim sno As Long: sno = 1
Dim sname As String
'CSVファイルのパス
fname = Dir(Folder_path & "\*.csv")
'ファイルが入っているフォルダが空白になるまでずっと
Do While fname <> ""
'CSVファイルのパス。1つ目のCSVを開く
Set wb = Workbooks.Open(Folder_path & "\" & fname)
'CSVファイルの全選択と思われる
'シートの名前1から4
sname = "Sheet" & sno
wb.Worksheets(1).Range("A1").CurrentRegion.Copy
ThisWorkbook.Worksheets(sname).Cells(1, 1).PasteSpecial Paste:=xlPasteValues
wb.Close
sno = sno + 1
fname = Dir()
Loop
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【マクロ】エラー【#DIV/0!】が発生する場合の回避方法について
Excel(エクセル)
-
【マクロ】【画像あり】4つのファイルデータを1つのエクセルブックにある4つのシートへそれぞれコピー
Excel(エクセル)
-
VBA_日時のソート
Excel(エクセル)
-
-
4
【マクロ、画像あり】A表かB表かどちらか判断をして、処理をする
Excel(エクセル)
-
5
マクロOn Error GoTo ErrLabelとOn Error Resume Next教えて
Excel(エクセル)
-
6
グループごとの個数をカウントしたい。
Excel(エクセル)
-
7
エクセル
Excel(エクセル)
-
8
勤怠表について ABS、TEXT関数の使い方について教えて下さい
Excel(エクセル)
-
9
【Officer360?Officer365?のデータの入力規則の解除方法を教えてくださ
Excel(エクセル)
-
10
【WordでもExcelでも良いですが】A4サイズの用紙に1文字を印刷する方を教えてく
Excel(エクセル)
-
11
【マクロ】変数に入れるコードを少しでも短くする為には?
Excel(エクセル)
-
12
【マクロ】【画像あり】関数が入っているセルを空白とみなさないように出来ますか?
Excel(エクセル)
-
13
同率順位の発生しないランキング表をエクセルで作成したい
Excel(エクセル)
-
14
【ExcelVBA】dictionaryの重複判断の基準(セル結合だと違う値として認識される)
Visual Basic(VBA)
-
15
レイアウトが異なる別のワークブックからデータを転記する方法を教えてください
HTML・CSS
-
16
【Excel VBA】 テキストファイルを、特定文字列で改行を入れてExcelに一行ずつ出力
Excel(エクセル)
-
17
(マクロ)シートを保護してもマクロは利用できる?
Excel(エクセル)
-
18
VBAでセルの書式を変えずに文字列を置換する方法をご教示ください
Visual Basic(VBA)
-
19
毎週追加して行くセルの数値を自動的に返したい
Excel(エクセル)
-
20
年間の医療費のデータがあり、月々の集計をする計算式を教えていただけませんか
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】【画像あり】4つの...
-
excelのInitializeイベントとAc...
-
VBAでシートをまたぐ処理の方法
-
ACCESSのVBAにてExcelのシ...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
教えて下さい
-
配列数式の解除
-
Excel・Word リサーチ機能を無...
-
メッセージボックスのOKボタ...
-
VBAでfunctionを利用しようとし...
-
一つのTeratermのマクロで複数...
-
お助けください!VBAのファイル...
-
Excel_マクロ_現在開いているシ...
-
ExcelのVBA。public変数の値が...
-
UserForm1.Showでエラーになり...
-
Excelのセル値に基づいて図形の...
-
【VBA】ワークブックを開く時に...
-
Filter関数を用いた結果、何も...
-
2つ以上の変数を比較して最大数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelのInitializeイベントとAc...
-
【マクロ】【画像あり】4つの...
-
ACCESSのVBAにてExcelのシ...
-
複数のシートに分かれるデータ...
-
複数のExelbookを1シートにまと...
-
CSVファイルの読み込みVBA作成...
-
EXCELで1シートのデータを複数...
-
AccessDB VBA
-
【VBA】3個のワークブックから...
-
エクセルVBAで名前の決まってい...
-
excel
-
オートシェイプの不具合について
-
VBAでシートをまたぐ処理の方法
-
エクセルシートをひとつにまと...
-
VBA処理でこんな条件処理ってで...
-
EXCEL VBA 条件にあったもの...
-
Excelマクロ 別シートへ連続コ...
-
ファイルを開いていても同じフ...
-
【VBA】セルとシート操作の繰り...
-
「IsText」の使い方を教えてく...
おすすめ情報