教えて! goo のコンテンツに対する取り組みについて

複数ブックのシートを集計用のブックにコピーしたいです。
以下ブックは同じフォルダに存在します。

①集計用ブック(元々ピボットシートがあります)
※③を①にコピーしたあと、ピボットで集計したい為
②収支データブック
③明細ブック

①の集計用ブックへ②のブックの「推移」、「明細」シートと③の「sheet1」シートをコピーしたいです。

②の「推移」、「明細」シートは図とデータが混じったデータが入っている為、そのままの書式でコピーしたいです。

②と③共に、4月以降データが締まった月までのデータが システム上自動的に抽出される為、抽出したい月以外を削除したいです。

今回の場合だと4.5.6月が出てきてしまうので6月だけ抽出したいです。

複数支店分同じ処理を自動化したいため
何卒ご教授願います。

「複数ブックの特定シートを集計用ブックへコ」の質問画像

質問者からの補足コメント

gooドクター

A 回答 (8件)

各支店用にマクロを書き換える場合、


Const book1 As String = "収支データブック.xlsx"
Const book2 As String = "明細ブック.xlsx"
上記の2行のブック名を各支店用に変更すれば良いはずです。(シート名は同じ前提です)
それでうまくいかない場合は、補足してください。
    • good
    • 1
この回答へのお礼

ありがとう

こんにちわ。
いつもご教授頂きましてありがとうございます。

支店用マクロですが、ご教授いただいた箇所を変更し、無事問題なく動作する旨確認いたしました。

追加でご教授頂きまして大変助かりました。
ありがとうございました。

お礼日時:2021/07/20 14:43

>支店用マクロですが、ご教授いただいた箇所を変更し、無事問題なく動作する旨確認いたしました。



了解しました。
    • good
    • 1

>無事、解決いたしました!


解決してよかったです。1支店分が完了でしょうか。
集計用ブック
収支データブック
明細用ブックは、それぞれ支店毎に存在するということでしょうか。
例えば
○○支店集計用ブック
○○支店収支データブック
○○支店明細用ブック
にようになっているということでしょうか。
    • good
    • 1
この回答へのお礼

ご心配、お手数おかけいたしました。

仰る通り、1支店分が完了しましたので
各支店の集計用ブックにマクロをコピペする予定です。

各支店名毎にフォルダ分けしており
その中に◯◯支店集計ブック、◯◯支店データブック、◯◯支店明細用ブックがあります。

お礼日時:2021/07/19 14:23

念のため下記URLにもアップしておきました。


https://ideone.com/HJw1hN
    • good
    • 1
この回答へのお礼

助かりました

こんにちは。
先週は再度ご教授いただきましてありがとうございました。
当初の私のコピペの仕方が違っていたようで大変お手数おかけいたしました。
無事、解決いたしました!
ありがとうございました。

お礼日時:2021/07/19 12:45

wb.Worksheets(Sheet1).Copy


after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
ように、2行にわかれていませんか。

wb.Worksheets(Sheet1).Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
は1行に記述します。(添付図の黄色の個所が正しい例です)
「複数ブックの特定シートを集計用ブックへコ」の回答画像4
    • good
    • 1
この回答へのお礼

お世話になっております。

仰る通り、2行に分かれていたかもしれません。
恐れ入りますが、週明け再度確認させていただきます。

お手数おかけして申し訳ありませんでした。

お礼日時:2021/07/16 18:08

>以下含めafterから始まる箇所でコンパイルエラー「構文エラー」と表示されました。


>after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)

こちらでは、エラーが発生していません。
マクロは全て、手打ちでなくコピペされたのでしょうか。
また、コピペした後、上記行付近を変更していないでしょうか。
    • good
    • 1
この回答へのお礼

うーん・・・

ご返信が遅くなり申し訳ありません。

ご教授頂いたマクロをコピペして
標準モジュールに貼りつけただけです。
手修正等はしておりません。

ちなみにコピペした際、after〜の部分が赤字になってしまいます。
私の貼り付け方が悪いのかもしれません…。

集計用ブックにマクロを設定する。
集計用ブックには予めピボットシートが存在する。
2つのブックからそれぞれのシートを集計用ブックにコピーする。

ご提示させて頂いた上記条件での認識で相違ないでしょうか?
私の説明不足で認識が違うようでしたら申し訳ありません。

お礼日時:2021/07/16 17:33

以下のマクロを標準モジュールに設定してください。


Option Explicit
Public Sub 集計ブックコピー()
Const book1 As String = "収支データブック.xlsx"
Const book2 As String = "明細ブック.xlsx"
Const Sheet1 As String = "推移"
Const sheet2 As String = "明細"
Const Sheet3 As String = "Sheet1"
Dim sheet_name As String
Dim wb As Workbook
Call delete_sheet(Sheet1)
Call delete_sheet(sheet2)
Call delete_sheet(Sheet3)

Set wb = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & book1)
wb.Worksheets(Sheet1).Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
ThisWorkbook.Worksheets(Worksheets.Count).Name = Sheet1
wb.Worksheets(sheet2).Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
ThisWorkbook.Worksheets(Worksheets.Count).Name = sheet2
wb.Close

Set wb = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & book2)
wb.Worksheets(Sheet3).Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
ThisWorkbook.Worksheets(Worksheets.Count).Name = Sheet3
wb.Close
MsgBox ("完了")
End Sub
'指定されたシートを削除
Private Sub delete_sheet(ByVal sheet_name As String)
Dim i As Long
For i = 1 To ThisWorkbook.Worksheets.Count
If LCase(sheet_name) = LCase(ThisWorkbook.Worksheets(i).Name) Then
Application.DisplayAlerts = False 'シート削除時の警告を出さないようにする
ThisWorkbook.Worksheets(i).Delete
Application.DisplayAlerts = True 'シート削除時の警告を出すようにする(元に戻す)
Exit Sub
End If
Next
End Sub
    • good
    • 1
この回答へのお礼

お世話になっております。
マクロをご教授頂きましてありがとうございます。

早速、検証させていただきましたところ
以下含めafterから始まる箇所でコンパイルエラー「構文エラー」と表示されました。

after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)

いろいろ調べてみたのですが、分からず…。
申し訳ありませんが、再度ご教授願います。

お礼日時:2021/07/16 12:55

補足要求です。


1.マクロを格納するのは集計用ブックですか。
2.収支データブックと明細ブックの拡張子は何ですか。(.xlsxですか)
3.収支データブックの推移シートと明細シートをシート毎、集計用ブックへコピーします。
  既に、集計用ブックに推移シートと明細シートが存在する場合は、そのシートは上書きされますが宜しいですか。
4.明細ブックのSheet1をシート毎、集計用ブックへコピーします。
  既に、集計用ブックにSheet1が存在する場合は、そのシートは上書きされますが宜しいですか。
5.6月のデータのみ抽出したいとのことですが、"6月"の情報をマクロ内で直接抱えて良いでしょうか。
  もし、来月になると、おそらく7月のデータを処理したくなると思いますが、その場合、マクロ内の
  「6月」を「7月」にあなたが修正する必要があります。
  その予定で考えられているのでしょうか。
  もし、シートのどこかのセルに6月の情報を定義していけば、それをマクロが参照し、6月のデータのみを
  抽出するようにすることは可能です。
6.シート毎、推移シートをコピーすると、この場合、4月と5月を削除するので、C10:D13の範囲のセルが空白に
  なりますが、それで良いのでしょうか。
  それとも、6月分を左につめて、C10:C13に6月を残したいのでしょうか。
7.シート毎、明細シートをコピーした場合、6月を残しますが、このシートについては、最新の月(=6月)は
  常に、B10:E13に書かれているのでしょうか。そうであれば、対象月の判定をせずに、常にB10:E13のみ残し、
  以降の行を空白にすれば良いことになります。
8.Sheet1の6月のみを残した場合、6月分は上に詰めて、10,11行に残すのでしょうか。
9.複数支店分同じ処理を自動化したいとのことですが、今回のマクロで処理されるのは1支店分なのですか。
  その場合、どのようにして複数支店分を実現しようとしていますか?
    • good
    • 1
この回答へのお礼

いつもお世話になっております。
ご質問頂きましてありがとうございます。
以下、回答させていただきます。

ただ、該当月(今回の場合ですと6月)のみ残したいという条件なのですが、こちらの都合で大変申し訳ありませんが
収支データの各明細と明細ブックのシートを集計用にコピーするのみの条件に変更させてください。
本当に申し訳ありません。

大変恐縮ですが、5〜8に関しては回答を割愛させて頂きます。

>1.マクロを格納するのは集計用ブックですか。
→はい、そうです。

>2.収支データブックと明細ブックの拡張子は何ですか。(.xlsxですか)
→.xlsxです。

>3.収支データブックの推移シートと明細シートをシート毎、集計用ブックへコピーします。
  既に、集計用ブックに推移シートと明細シートが存在する場合は、そのシートは上書きされますが宜しいですか。
→はい、大丈夫です。

>4.明細ブックのSheet1をシート毎、集計用ブックへコピーします。
  既に、集計用ブックにSheet1が存在する場合は、そのシートは上書きされますが宜しいですか。
→はい、大丈夫です。

>9.複数支店分同じ処理を自動化したいとのことですが、今回のマクロで処理されるのは1支店分なのですか。
  その場合、どのようにして複数支店分を実現しようとしていますか?

支店ごとのブックにマクロを組み、1ファイルごとに処理するつもりでした。

恐れ入りますが、何卒ご教授願います。

お礼日時:2021/07/15 17:58

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

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

gooドクター

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

このカテゴリの人気Q&Aランキング