Excel VBA質問箱 IV

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

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


32944 / 76734 ←次へ | 前へ→

【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

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

【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 お礼

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