
マクロ初心者です。
どうか教えてください。
●マクロのファイル*A →コピー先
集計リスト_202301.xlsm
sheet1は集計、sheet2から1〜31日までのシートがあります
●Excelファイル*B →コピー元
リスト_202301.xlsx
エリア毎にある月毎にできるファイルです
→リスト202301、リスト202302
シートはその日その日に作成更新され月末になると揃います
ファイルの場所は説明すると…
C:¥user¥te¥desk¥★E
この階層にはエリア毎のデータ集約されるファイルがあります
大阪、東海、北陸、四国、山陽、九州、エリア(作業用)
→→大阪のファイルを開くと
C:¥users¥te¥desk¥★E¥大阪¥USER¥アラーム
ココに
●Excelファイル*B
リスト_202301.xlsx があります。
C:¥user¥te¥desk¥★E¥エリア
ココに
●マクロのファイル*A
集計リスト_202301.xlsm があります。
●困っている作業内容●
『ファイルB』のその日その日にできあがるシートのB8:N9のセルを『ファイルA』の『ファイルB』と同じ日のシートのB8:N9のセルにコピーしたいです。
『Bシート』は毎日のデータなので7日までなら、データ集計前日の01〜06のシートになります。
手作業でマクロ登録して作動させていて、やはりこれでは限界があり困っています。
スムーズなマクロ構文を作成していただけると助かります。できればわかりやすく教えていただけると嬉しいです。
よろしくお願いします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
以下のように処理することができます。
ファイルBの日付を取得する。
ファイルAのシート名と比較して、コピー先のシートを決定する。
ファイルBのシートからB8:N9の範囲をコピーする。
ファイルAのコピー先のシートに貼り付ける。
以下は、上記の処理を行うためのサンプルマクロです。
Sub CopyData()
' ファイルBから日付を取得
Dim wbB As Workbook
Set wbB = Workbooks.Open("C:\user\te\desk\★E\エリア\大阪\USER\アラーム\リスト_202301.xlsx")
Dim dateB As Date
dateB = wbB.Sheets(1).Range("A1").Value
wbB.Close False
' コピー先のシート名を決定
Dim sheetName As String
sheetName = Format(dateB, "dd")
Dim wbA As Workbook
Set wbA = ThisWorkbook
Dim wsA As Worksheet
Set wsA = wbA.Sheets(sheetName)
' ファイルBからB8:N9の範囲をコピーして、貼り付ける
Dim dataB As Variant
Set wbB = Workbooks.Open("C:\user\te\desk\★E\エリア\大阪\USER\アラーム\リスト_202301.xlsx")
dataB = wbB.Sheets(sheetName).Range("B8:N9").Value
wbB.Close False
wsA.Range("B8:N9").Value = dataB
End Sub
このマクロは、ファイルAが開かれた状態で実行する必要があります。また、ファイルBのパスは固定のため、必要に応じて変更する必要があります。
No.1
- 回答日時:
以下は、『ファイルB』の各日付シートからB8:N9のセルを取得して、『ファイルA』の同じ日付のシートのB8:N9のセルに貼り付けるマクロの例です。
以下の手順に従って実行することができます。マクロを新規作成するために、ExcelファイルAを開きます。
「Alt + F11」キーを押して、VBAエディタを開きます。
VBAエディタ内で、挿入メニューから「モジュール」を選択して、新しいモジュールを作成します。
作成された新しいモジュール内に以下のマクロコードを貼り付けます。
「Alt + Q」キーを押して、VBAエディタを閉じます。
ExcelファイルAを保存します。
ExcelファイルAを開き、[開発]タブを表示し、[マクロ]をクリックします。
表示された[マクロ]ダイアログボックスで、新しく作成した「CopyDataFromBtoA」というマクロを選択します。
[実行]ボタンをクリックすると、マクロが実行されます。
Sub CopyDataFromBtoA()
Dim wbA As Workbook, wbB As Workbook
Dim wsA As Worksheet, wsB As Worksheet
Dim wsBName As String
Dim i As Integer
'ファイルAを開く
Set wbA = ThisWorkbook
'ファイルBを開く
Set wbB = Workbooks.Open("C:\user\te\desk\★E\エリア\大阪\USER\アラーム\リスト_202301.xlsx")
'ファイルBの日付シートをループ
For i = 1 To 7 ' 1から7までの日付を処理する
wsBName = Format(i, "00") ' シート名を「01」「02」などの2桁の日付にする
Set wsB = wbB.Sheets(wsBName)
Set wsA = wbA.Sheets(wsBName)
' B8:N9のセルの値をコピーする
wsA.Range("B8:N9").Value = wsB.Range("B8:N9").Value
Next i
' ファイルBを閉じる
wbB.Close SaveChanges:=False
End Sub
このマクロを実行することで、『ファイルB』の各日付シートからB8:N9のセルを取得して、『ファイルA』の同じ日付のシートのB8:N9のセルに貼り付けることができます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】変数に入れるコード...
-
word2007ファイル起動時のSQLに...
-
エクセル 複数ファイルの一括...
-
Excelのマクロについてご教授く...
-
エクセルマクロで不特定なファ...
-
【マクロ】名前を保存する際に...
-
エクセルのxls形式からxlsx形式...
-
フォルダ内のexcelファイルを順...
-
データ参照先が別ファイルの場...
-
エクセルマクロ 異なるファイ...
-
EXCEL VBA 指定したファイルが...
-
accessフォルダを移動したらフ...
-
エクセルファイルをHTML化する...
-
ISOファイルとMDSファイル
-
ccdファイルはどのようにして使...
-
エクセルでファイル名が毎回違...
-
NASのフォルダが読み取り専用に...
-
イーファンビューでwebpファイ...
-
Word差し込み印刷、フォルダの...
-
Wordの文章をExcelに内容ごとに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】変数に入れるコード...
-
【マクロ】EXCELで読込したCSV...
-
EXCEL VBA 指定したファイルが...
-
【マクロ】名前を保存する際に...
-
フォルダ内のexcelファイルを順...
-
エクセルマクロで不特定なファ...
-
【Excel VBA】ファイル名が一...
-
ファイルを開かずにマクロを実行
-
エクセル 複数ファイルの一括...
-
accessフォルダを移動したらフ...
-
ファイルの保存場所を変えたら...
-
データ参照先が別ファイルの場...
-
VBAでワークブックの名前を変数...
-
EXCELマクロを無効にして開く方法
-
フォルダ内のブック全部にパス...
-
エクセル(マクロ)のファイル...
-
エクセルファイルを開く時、関...
-
秀丸:あらかじめ設定した複数...
-
Excelのマクロでファイルを開く...
-
EXCEL VBAで作成した ファイル...
おすすめ情報
ご対応くださりありがとうございます。
構文を登録したのですが、セルの貼り付けができなくて困っています。
あと、
大阪だけとしていますが、全エリアを呼び出すにはどのような構文にすればいいでしょうか?
リストもファイルA(コピー先)は全エリアを対象とするので、以下のようなものです。
大阪 東海 中国
B8:D9 E8:H9 I8:N9
四国 九州
B22:D23 E22:R23
このようなリストが シート01〜31まであります。
ファイルB(コピー元)は上のリストに01、02、03とシートが増えていきます。
ご教授よろしくお願いします。