マクロ初心者です。
どうか教えてください。
●マクロのファイル*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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォルダ内のexcelファイルを順...
-
【マクロ】名前を保存する際に...
-
EXCEL VBA 指定したファイルが...
-
エクセルマクロで不特定なファ...
-
エクセル 複数ファイルの一括...
-
データ参照先が別ファイルの場...
-
エクセルVBA 上書き保存禁止と...
-
ファイルを開かずにマクロを実行
-
Accessのaccdbファイルを起動で...
-
VBA EXCELファイル選択⇒指定セ...
-
【Excel VBA】ファイル名が一...
-
複数のエクセルファイルに対し...
-
エクセルのxls形式からxlsx形式...
-
VLookupで参照する範囲を変数で...
-
エクセル(マクロ)のファイル...
-
リンク切れチェックを行うマクロ
-
フォルダ内の複数ファイルの一...
-
accessフォルダを移動したらフ...
-
フォルダ内のブック全部にパス...
-
vlookup関数の引数を変数で指定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】名前を保存する際に...
-
EXCEL VBA 指定したファイルが...
-
フォルダ内のexcelファイルを順...
-
ファイルを開かずにマクロを実行
-
エクセルマクロで不特定なファ...
-
エクセル(マクロ)のファイル...
-
【Excel VBA】ファイル名が一...
-
データ参照先が別ファイルの場...
-
Accessのaccdbファイルを起動で...
-
VBAでワークブックの名前を変数...
-
ファイルの保存場所を変えたら...
-
accessフォルダを移動したらフ...
-
エクセル 複数ファイルの一括...
-
vlookup関数の引数を変数で指定...
-
フォルダ内のブック全部にパス...
-
エクセルのシートの数を数えた...
-
Excel VBA でファイルが開かれ...
-
エクセルマクロ 異なるファイ...
-
ACCESS VBAでファイルを開くダ...
-
エクセルファイルを開く時、関...
おすすめ情報
ご対応くださりありがとうございます。
構文を登録したのですが、セルの貼り付けができなくて困っています。
あと、
大阪だけとしていますが、全エリアを呼び出すにはどのような構文にすればいいでしょうか?
リストもファイルA(コピー先)は全エリアを対象とするので、以下のようなものです。
大阪 東海 中国
B8:D9 E8:H9 I8:N9
四国 九州
B22:D23 E22:R23
このようなリストが シート01〜31まであります。
ファイルB(コピー元)は上のリストに01、02、03とシートが増えていきます。
ご教授よろしくお願いします。