|
▼ニャンソ さん:こんばんは。
ちょっと、話の経緯がとぎれてしまって、
この↓ 発言に関してだけなのですが...
>>>Sub Try1()
>>> '◆送られてきたBookをアクティブにして実行してください
>>> Set Book1 = ActiveWorkbook '送られてきたデータブック
>>> Set Book2 = Workbooks("Book2.xls") '印刷シート
>>> Set Book3 = ThisWorkbook 'このマクロBook(Group名一覧を含む)
>>>
>>> If Book1 Is Book2 Then
>>> MsgBox "送られてきたBookを前面にして実行", vbCritical
>>> Exit Sub
>>> End If
>>> If Book1 Is Book3 Then
>>> MsgBox "送られてきたBookを前面にして実行", vbCritical
>>> Exit Sub
>>> End If
>
>Book1をアクティブにするとの事でしたが、
>Book3をアクティブにすると「送られてきたBookを前面にして実行」
>というエラーは出ませんでした…
... 不思議ですねェ ...
>>> Set Book1 = ActiveWorkbook '送られてきたデータブック
ここで ActiveWorkbook というのは いまアクティブなBook のことです。
それを Book1 というコード上の変数にセットしています。
>>> Set Book3 = ThisWorkbook 'このマクロBook(Group名一覧を含む)
ここで、ThisWorkbook というのは マクロが書いてあるこのBook のことです。
同時に、 ThisWorkbook は 「List」と「Temp」というシートをもっています。
>>> If Book1 Is Book3 Then
>>> MsgBox "送られてきたBookを前面にして実行", vbCritical
>>> Exit Sub
>>> End If
の部分は、 Book1 (= ActiveWorkbook、最前面にあるBook) が Book3
(=マクロブック) だったら、マクロブックが最前面になっている、という
ことなので、送られてきたBookをアクティブにして、このマクロを実行して
下さい。
ということを言っているのですが。。。
最終的な目的ですが、
送られてきた Book1 から 必要なデータを抽出して Book2 上で印刷したい
ということですよね。
Book1(送られてきたBook) から 印刷用Book2 に AdvancedFilter で印刷に
必要なデータだけ抽出転記できればいいのですが、印刷用Book2 のシートは
罫線とかフォーマットがセットしてあるので、
Book3 の「Temp」というシート上に Book1 から (AdvancedFilterを使って)
必要な情報だけ抽出コピーして、
「Temp」シートの表に Book3 の「List」シートから、Book1 にはないグルー
プ番号とかを Book1にある項目に紐づけてTenpの表を補足し、並び替え、
加工された「Temp」シートの表を ●●別にAutoFilter かけて、Book2にコピー
し、●● の種類分だけ 印刷を繰り返す。
(なぜ Autofilterかというと Book2 には 罫線とか書式設定してあるので、
Book3のTempの表に Autofilter かけて 抽出範囲を 値のみコピーするため)
と、大まかに言って、こういう処理内容でしたよね?
再度、処理内容を大雑把にまとめると、
1. Book1 から Book3のTempシートに AdvancedFilterで 必要な地区だけ
必要な項目だけ 転記する
2. Book3のTempシート に Book3のListより グループ番号?とか、並び替えに
必要な情報を補足してやり、
3.Boo3のTempシートを 順番に あるグループ?だけ Autofilterで値Copyして
印刷に回す(Book2で)
と、上記 3 Step を分けて考えてもいいと思います。
まず、Book1(送られてきたデータシート)から AdvancedFilter で Book3の
Temp シートに 抽出する(1)の部分だけでも、コードで実行できるようにして
みませんか?
|
|