- ベストアンサー
選択した複数ブックのシート1を一度に印刷する方法について
- 現在、EXCELにて顧客管理の表を作成している際に、複数のブックの中にあるシート1を一度に印刷する方法を探しています。
- 作成した予約確認表を顧客に一斉に配布するためには、一度に複数のシート1を印刷する必要があります。
- 新しいブックにシート1をリンクさせることで、通常の印刷方法で選択したシートのみを一斉に印刷できる方法を検討しています。また、マクロを使用する方法も求めています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
新しいマクロブックを用意する マクロブックを顧客ブックが保存してあるフォルダに保存する (以前のマクロブックは破棄する) マクロブックを開く ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub チェックボックスの準備() dim n as long dim myPath as string dim myFile as string activesheet.checkboxes.delete cells.rowheight = 16 mypath = thisworkbook.path & "\" myfile = dir(mypath & "*.xls*") n = 1 do until myfile = "" if myfile <> thisworkbook.name then n = n + 1 activesheet.checkboxes.add(range("B1").left, cells(n, "B").top, 300, 1).caption = myfile end if myfile = dir() loop end sub sub チェックしたブックの印刷() dim c as checkbox dim myPath as sting mypath = thisworkbook.path & "\" for each c in activesheet.checkboxes if c.value = 1 then workbooks.open mypath & c.caption workbooks(c.caption).worksheets("予約確認表").printout application.wait now + timeserial(0,0,10) workbooks(c.pation).close false end if next end sub チェックボックスの準備を実行する チェックしたブックの印刷を実行する。 .
その他の回答 (1)
- keithin
- ベストアンサー率66% (5278/7941)
【とりあえず簡単に作成する方法】 顧客ブックを1冊開き、管理表の表範囲をコピー、集約ブックの所定のセルに「形式を選んで貼り付け」で「リンク貼り付け」を行います 顧客ブックを閉じます リンク貼り付けた数式が、保存場所まで含めた数式の記載に変わることを確認します リンク貼り付けした数式のセル範囲をコピー、次の所定の場所に貼り付けます 貼り付けたセル範囲を選択した状態で Ctrl+Hで置換を開始 最初のブック名 を 次の顧客のブック名 にすべて置換します すると、次の顧客ブックの所定シートの所定のセル範囲を参照する数式に、一斉に書き換えることができます。 以下繰り返しで、各顧客ブックを参照する数式を量産していきます。 【問題点】 >それらのシート1に顧客に配布する予約確認表がある これは具体的に、正確に、 ●各顧客ブックに必ず「シート1」という名前のシートが間違いなく存在していて、そこに管理表が作成してある ●実は「1枚目のシート」という意味で、ブックによってシート名が違う場合もある どういう状況なんでしょうね。 マクロとか作るのは別にそんなにムズカシイ話じゃありませんが、こういった「事実」にキチンと即したマクロを教わらないと、役に立ちません。それとも?アバウトに教わればあとはご自分でなんとかできるツモリがあるってことでしょうか。 印刷マクロ用ブックを用意する ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1() dim myPath as string dim myFile as string mypath = thisworkbook.path & "\" myfile = dir(mypath & "*.xls*") do until myfile = "" if myfile <> thisworkbook.name then workbooks.open mypath & myfile workbooks(myfile).worksheets(1).printout application.wait now + timeserial(0,0,15) workbooks(myfile).close false end if myfile = dir() loop end sub マクロを登録したブックを、顧客ブックが保存してあるフォルダの中に一緒に保存してから、マクロを実行する
補足
早速ご返信頂きありがとうございます。 問題点の部分は正確な情報をお伝え出来ておらず申し訳ありませんでした。 シート1は全て同じ名前のシート名(予約確認表)となっております。 とちらも試してみました。 そしてどちらもうまくいきました。 素晴らしいです。 マクロの方ですが、同一フォルダの中にあるすべてのブックではなく、選択するようには出来ないものでしょうか? マクロ用ブックの中に顧客ブック名とそれぞれにチェックボックスがあり、チェックがあるもののシート1(予約確認表)を印刷するような。 もし簡単に実装できそうなら教えて頂けたらと思います。 【とりあえず簡単に作成する方法】でも十分やりたいことが出来ますので上記が難しいものでしたらこのままベストアンサーとさせていただきたいと思います。
お礼
チェックボックス機能付きのコードまで作成して下さりありがとうございました! 2箇所コードの打ち間違いがありましたが、なんとか自力でデバッグ解消できました。 keithinさんのおかげで完璧にやりたいことが出来るようになりました。 本当にありがとうございました。