重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【終了しました】教えて!gooアプリ版

【やりいた事】⇒コードorアドバイスお願いします
下記画像をご覧ください

❶.1つのエクセルブックがあります。このブックには4つのシートがあります

❷.4つのcsvファイルがあります(CSVはEXCELファイルに置き換えてもok)
⇒この4つのファイルのデータを❶の1つのエクセルにある、4つのシートへ貼付したいです

※4つのデータは1個~4個へ変動します。ファイルが1つの時もあれば4つの時もあるという意味
※❶のコピー先シート4つは、貼付前は全て、何も何も貼りついていない状態です


【動作手順】※以下4データはWEBサイトよりダウンロードしています
※出来ればDL順に貼付したい。複雑な場合、順番じゃなくてもOK⇒順不同

a_20250529124239.csvを開く
⇒A1セルでCtrl+A全選択しコピー
⇒最新配列.xlsm Sheet1 のA1セルに値貼付

a_20250529124240.csvを開く
⇒A1セルでCtrl+A全選択しコピー
⇒最新配列.xlsm Sheet1 のA1セルに値貼付

a_20250529124241.csv⇒最新配列.xlsm Sheet3 のA1セルに値貼付
⇒A1セルでCtrl+A全選択しコピー
⇒最新配列.xlsm Sheet1 のA1セルに値貼付

a_20250529124242.csv⇒最新配列.xlsm Sheet4 のA1セルに値貼付
⇒A1セルでCtrl+A全選択しコピー
⇒最新配列.xlsm Sheet1 のA1セルに値貼付


【ファイルパス】コピーしたい4つのファイル。※コピー元
C:\Users\2020\OneDrive\マクロ\ダウンロード場所\a_20250529123942.csv
シート名:20250529123942 ⇒シートは1つしか無い

C:\Users\2020\OneDrive\マクロ\ダウンロード場所\a_20250529123941.csv
シート名:20250529123941 ⇒シートは1つしか無い

C:\Users\2020\OneDrive\マクロ\ダウンロード場所\a_20250529123940.csv
シート名:20250529123940 ⇒シートは1つしか無い

C:\Users\2020\OneDrive\マクロ\ダウンロード場所\a_20250529123939.csv
シート名:20250529123939 ⇒シートは1つしか無い

【ファイルパス】コピー先
C:\Users\2020\OneDrive\マクロ\最新配列.xlsm
※4つのファイルのデータをコピーしたいファイル
※シート名⇒Sheet1、Sheet2、Sheet3、Sheet4、


【参考コード】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


【参考コード】ファイルを開いてデータをコピペするコードです

Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\2020\OneDrive\マクロ\ダウンロード場所\a_20250529124242.csv")

Range("a1").CurrentRegion.Copy

ws.Range("a1").PasteSpecial Paste:=xlPasteValues

Application.CutCopyMode = False

wb.Close

「【マクロ】【画像あり】4つのファイルデー」の質問画像

A 回答 (1件)

こんばんは



>コードorアドバイスお願いします
一番簡単なのは、ご提示の一回分のコードを四回記述することでしょう。
もう少し効率的にするなら、可変部分を配列化しておいて繰り返し(=ループ)処理すればよろしいかと。


さらに記述を単純化したいのなら、
 >⇒A1セルでCtrl+A全選択しコピー~~
のような考え方でなく、シートそのものをコピーすると考えれば、1センテンスですませられます。
 Worksheet.Copy Destination
https://learn.microsoft.com/ja-jp/office/vba/api …

一方で、ご提示のコードでは「値のコピー」になっているようですので、書式等はコピーしたくないという場合は、
 DestSheet.Cells.Value = SorceSheet.Cells.Value
のような処理にすることで、シート全体の「値のみコピー」も可能です。
    • good
    • 1
この回答へのお礼

fujillin 様
お返事ありがとうございます
コードとは、以下のことでしょうか

ファイル名が毎回、変わります
転記先のファイル名や4つのシート名は変わりません

何かアドバイスいただければ幸いです
また、本質問について、再度、別の切り口から質問UPしました

お手すきな時に、ご覧ください。よろしくお願いします

>一番簡単なのは、ご提示の一回分のコードを四回記述することでしょう。

【参考コード】ファイルを開いてデータをコピペするコードです

Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\2020\OneDrive\マクロ\ダウンロード場所\a_20250529124242.csv")

Range("a1").CurrentRegion.Copy

ws.Range("a1").PasteSpecial Paste:=xlPasteValues

Application.CutCopyMode = False

wb.Close

お礼日時:2025/05/30 23:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A