Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5755 / 13645 ツリー ←次へ | 前へ→

【48963】シートを選択して印刷するには。 momo 07/5/17(木) 18:00 質問[未読]
【49017】Re:シートを選択して印刷するには。 りん 07/5/21(月) 8:28 回答[未読]
【49023】Re:シートを選択して印刷するには。 momo 07/5/21(月) 9:54 質問[未読]
【49038】Re:シートを選択して印刷するには。 りん@通りすがり 07/5/21(月) 15:54 回答[未読]
【49074】Re:シートを選択して印刷するには。 momo 07/5/22(火) 15:03 お礼[未読]

【48963】シートを選択して印刷するには。
質問  momo  - 07/5/17(木) 18:00 -

引用なし
パスワード
   こんにちは
はじめまして。
かなりの初心者です。
実際できるのかもわからないのですが。。。。
ご検討よろしくお願いします。

【300近くある画像を店舗ごとに振り分けて印刷したいんです。】

(店名)   画像1  画像2  画像3 (シート名)
A店     1            1
B店            1
C店     1       1     1

※画像1のところはシート名が入っています
※例A店は画像1と3が必要という意味。

上記ような分配リストがあります。
これをボタン一つで分配して印刷できないでしょうか?
店と店の間に店名を印刷できたら最高です。
条件は下記です。

1、複数のブックがあります(容量が重いので分けています。)
2、各ブックにはシートが100シートくらい。
3、各シートには1ページに収まる画像が貼られています。
4、シート名と分配リストの画像123・・・。のところは同じです。
5、印刷設定はされています。(A1:H46)

説明がわかりにくいかもしれませんが、よろしくお願い致します。

【49017】Re:シートを選択して印刷するには。
回答  りん E-MAIL  - 07/5/21(月) 8:28 -

引用なし
パスワード
   momo さん、おはようございます。

>【300近くある画像を店舗ごとに振り分けて印刷したいんです。】
>
>(店名)   画像1  画像2  画像3 (シート名)
>A店     1            1
>B店            1
>C店     1       1     1

リストと画像が同じファイル上にあるとして。
新しいブックに、見出しシートと、該当の写真をコピーしてまとめて印刷します。
CloseをSaveに変えると、保存しておくこともできます。

Sub test()
  Dim Rmax As Long, Cmax As Long, RR&, CC&
  Dim ws1 As Worksheet, wb1 As Workbook, wb2 As Workbook, nsc As Integer
  Const Lsht As String = "分配リスト" '分配リストのシート名
  '
  With Application
   .ScreenUpdating = False '画面の更新を抑える
   nsc = .SheetsInNewWorkbook '元の新しいブックのシート数
   .SheetsInNewWorkbook = 1
   Set wb1 = .ActiveWorkbook
  End With
  '
  On Error Resume Next
  Set ws1 = wb1.Worksheets(Lsht)
  On Error GoTo 0
  '
  If ws1 Is Nothing Then
   MsgBox wb1 & "に" & Lsht & "がありません", vbExclamation
  Else
   '開始
   With ws1
     Rmax = .Range("A65536").End(xlUp).Row
     Cmax = .Range("IV1").End(xlToLeft).Column
   End With
   For RR& = 2 To Rmax
     Set wb2 = Application.Workbooks.Add
     With wb2.Worksheets(1)
      .Range("A2").Value = ws1.Cells(RR&, 1) '見出し
      With .Range("A2:I12")
        .Merge
        With .Font
         .Size = 72
        End With
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .ShrinkToFit = True
      End With
      With .PageSetup
        .PrintArea = "$A$1:$I$13"
        .CenterHorizontally = True
        .CenterVertically = True
      End With
     End With
     '新しいブックにコピー
     For CC& = 2 To Cmax
      If ws1.Cells(RR&, CC&).Value = 1 Then
        With wb2
         wb1.Worksheets(ws1.Cells(1, CC&).Value).Copy after:=.Worksheets(.Worksheets.Count)
        End With
      End If
     Next
     With wb2
      If .Worksheets.Count > 1 Then .Worksheets.PrintOut
      '
      .Saved = True
      .Close
      DoEvents
     End With
     Set wb2 = Nothing
   Next
  End If
  '
  With Application
   .SheetsInNewWorkbook = nsc '元の新しいブックのシート数
   .ScreenUpdating = True
  End With
End Sub

たとえばこんな感じです。

【49023】Re:シートを選択して印刷するには。
質問  momo  - 07/5/21(月) 9:54 -

引用なし
パスワード
   りん さん おはようございます。
朝から感激です。
私が思い描いていたまんまの動作です^^
すごいです☆

でも、ひとつ問題があって、画像の容量が重過ぎて
やっぱり一つのファイルに収められないんです。
複数ブックに画像データがあるままでは、
できないのでしょうか??

よろしくお願いします。

【49038】Re:シートを選択して印刷するには。
回答  りん@通りすがり  - 07/5/21(月) 15:54 -

引用なし
パスワード
   momo さん、こんにちわ。

>でも、ひとつ問題があって、画像の容量が重過ぎて
>やっぱり一つのファイルに収められないんです。
>複数ブックに画像データがあるままでは、
>できないのでしょうか??
ブックの分岐条件がわからないので、
  2〜 51列目までは画集1.xls
 52〜101列目までは画集2.xls
102〜151列目までは画集3.xls
152〜201列目までは画集4.xls
それ以降は画集5.xls というファイル名だとします。

Sub test()
  <<略>>
     '新しいブックにコピー
     For CC& = 2 To Cmax
      If ws1.Cells(RR&, CC&).Value = 1 Then
        With wb2

        '↓この分岐を追加
        Select Case CC&
         Case 2 to 51:  wsn = "画集1.xls"
         Case 52 to 101: wsn = "画集2.xls"
         Case 102 to 151: wsn = "画集3.xls"
         Case 152 to 201: wsn = "画集4.xls"
         Case Else:    wsn = "画集5.xls"
        End Select
        '↓こう変更、ただし全部ブックが開いているのが前提です。
        Workbooks(wsn).Worksheets(ws1.Cells(1, CC&).Value).Copy after:=.Worksheets(.Worksheets.Count)

        End With
      End If
  <<略>>

こんな感じです。
今、出先なので試せてませんが。

【49074】Re:シートを選択して印刷するには。
お礼  momo  - 07/5/22(火) 15:03 -

引用なし
パスワード
   りんさん

ありがとうございます!
最高です♪
バッチリ動きました。
出先でささっと出来てしまうその頭脳がほしい・・・。
お礼の言葉しか送れませんが、本当に感謝です。

ありがとうございました m(_ _)m

5755 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free