• 締切済み

エクセル 指定したページのみ印刷プレビュー

Sub PrintPreview() Dim i As Byte Dim r As Range For Each r In Selection i = r.Value ActiveWindow.SelectedSheets.PrintPreview From:=i, To:=i Next End Sub 標題の通りシート内に31ページ分印刷範囲のデータがあります とびとび印刷したいのですが よくできませんでした。 どこなの列に印刷したいページ番号を入力し、そこを範囲で囲み指定した番号のページのみ印刷をかけたいです。 よろしくお願いします。 例  C1からC5まで 2 5 10 14 25 の印刷ページ番号を入力し C1~C5を範囲で囲みマクロ実施後 プレビューに移行したい。

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

エクセルには基本的に、「印刷範囲の中からとびとびのページをつまんで印刷する」という機能はありません。 >そこを範囲で囲み指定した番号のページのみ印刷をかけたいです。 プレビューはオマケでマクロの目的はあくまでも「印刷する事」であれば、素直にその通り印刷します。 sub macro1()  dim h as range  on error resume next  for each h in selection  activesheet.printout from:=h.value, to:=h.value  next end sub このマクロでも、一回の印刷はあくまで対象ページ一塊ずつです。 #補足 回答はご相談の状況説明 >シート内に31ページ分印刷範囲のデータ に依っている。 #さらに補足 基本的に「とびとびの範囲を(連続)印刷プレビューする」ためには、「印刷範囲の設定」によって事前に印刷したい範囲を特定し、指定しておくことで実現します。(ただしその場合、各印刷ページのページ番号は「連番」となり、オリジナルの(飛び飛びの)ページ番号ではなくなります) しかしながらエクセルには「実際にどのセル範囲が1ページになり、どこからどこまでが2ページになる」のか、実際に印刷してみるまでエクセル自身にも判らないという構造的な欠陥があるため、事前に「どこページのセル範囲を印刷対象にする」みたいなマクロを書く事もできません。 以上の前提を踏まえて、実際にできることとしては 1.改ページなどを適正に配置し、成り行きの印刷はさせない 2.たとえばA1:I10が1ページ、A11:I20が2ページ…のように、どのセル範囲が何ページになるのかの対応を事前に特定しておく といった整備を行ったうえで sub macro2()  dim s as string  dim h as range  for each h in selection   if isnumeric(h.value) then    s = s & ",A" & h.value * 10 - 9 & ":I" & h.value * 10   end if  next  if s = "" then exit sub  s = mid(s, 2)  activesheet.pagesetup.printarea = s  activesheet.printpreview end sub といった具合に細工してみるような事はできます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAに範囲を指定して印刷

    特定のセルに数字を入力することでVLOOKUPで印刷ページを 検索して指定できるシートを作成しています。 下記のようなVBAを作成しました。 印刷開始ページと印刷終了ページを指定する場合、 セルの指定はどのようにすれば、よいのでしょうか? 開始ページと終了ページが同じセルの為、 開始ページ=Rnage("セル") 終了ページ=Rnage("セル") としてしまいますと、エラーが出てしまいます。 Sub 印刷() Dim S As Long Dim B As Long S = Application.InputBox("印刷開始ページを入力", Type:=1) If 開始ページ = 0 Then Exit Sub B = Application.InputBox("印刷終了ページを入力", Type:=1) If 終了ページ = 0 Then Exit Sub ActiveSheet.PageSetup.Order = xlOverThenDown ActiveWindow.SelectedSheets.PrintOut _ From:=S, To:=B, Collate:=True End Sub 宜しくお願い致します。

  • VBAエクセルにて印刷

    こんにちわ。教えてください。VBAでActiveXコントロールをクリック したのち、印刷のプレビューを表示したら、MegBoxメッセージを表示 させ ”はい””いいえ”を選択したいのですがうまくいきません。 ちなみに下記のプログラムです。 Private Sub 印刷_Click() ActiveWindow.SelectedSheets.PrintPreview Dim ans As Integer ans = MsgBox("印刷しますか?", vbInformation + vbYesNo, "確 認") Select Case ans Case vbYes Application.ActivePrinter = "Canon iR C3080/C3580 LIPSLX on Ne05:" ExecuteExcel4Macro "PRINT(2,1,1,1,,,,,,,,2,,,TRUE,,FALSE)" Case vbNo MsgBox "故障履歴印刷をキャンセルします。" End Select End Sub 以上なんですがプレビュー後に”印刷しますが”が聞いてきません。 どうすればいいですか?

  • EXCEL VBA(初心者)印刷ループについて

    こんばんは。 EXCEL VBA初心者です。 以下のような印刷ループのVBAを作りました。 (シート1にデータを入力しシート2で印刷) Sub 連続印刷() Dim x As Integer x = Application.InputBox( _ prompt:="先頭ページの番号を入力してください") Y = Application.InputBox( _ prompt:="最終ページの番号を入力してください") line: Worksheets("1").Select Range("B1").Select For i = x To Y 'ループ開始番号と終了番号を追加 ActiveCell.FormulaR1C1 = i '変数 i を代入するように修正 ' Range("B1").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Next i '次へループ End Sub というものです。 以下の問題点を改善したいのです。 (1)開始番号と終了番号のいずれかが ”空白”の場合は  VBAを中止し何も印刷しない(何もメッセージを表示しない) (2)開始番号が終了番号より数字が大きい場合も(1)と同様の処理にしたい というものです。 初心者のためご教授ください。 よろしくお願いいたします。

  • エクセル マクロで教えてください

    下記のマクロがうまく働きません SUB印刷01は単独ではいくのですが、繰返しをするとプレビューの行で止まります。SHEETオブジェクトがおかしいというのですが私には分かりません宜しくお願いします Sub 印刷01() With ActiveSheet.PageSetup .PrintQuality = 600 .CenterHorizontally = True .CenterVertically = False .Orientation = xlLandscape .Draft = False .PaperSize = xlPaperA4 .FirstPageNumber = xlAutomatic .Order = xlDownThenOver .BlackAndWhite = False .Zoom = 47 .PrintErrors = xlPrintErrorsDisplayed End With ActiveWindow.SelectedSheets.PrintPreview ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate:=True End Sub Sub 印刷繰返し() Dim WS As Object For Each WS In Sheets WS.Activate Call 印刷01 Next End Sub

  • エクセルで連続印刷した範囲を印刷済とわかるように

    エクセルで以下のようなプログラムで変数s、eに入力の範囲でシートの連続印刷しております。印刷し終わった後ですが、変数s~eの範囲を赤くして印刷済かどうかをひと目でわかるようにしたいと思います。可能でしょうか。 Sub 範囲を指定して印刷() Dim s As Long Dim e As Long Dim i As Long On Error Resume Next s = InputBox("開始No.を入力して下さい。") If s = 0 Then Exit Sub e = InputBox("終了No.を入力して下さい。") If e = 0 Then Exit Sub For i = s To e Worksheets("A").Range("C1") = i Application.Wait Now + TimeSerial(0, 0, 10) Worksheets("B").PrintOut Next i End Sub

  • エクセル マクロ 印刷指定

    マクロが解りません。色々調べてマクロの記録を使って、下記のマクロを作りました。 1枚目の印刷を2枚目、3枚目印刷として書き足してみました。 しかしエラーが出て2番目のシートからの印刷ができません。 Sub 連絡票印刷() ' ' Macro1 Macro ' ' Keyboard Shortcut: Ctrl+p ' Sheets("連絡票").Select ActiveWindow.SelectedSheets.PrintOut From:=Sheets("連絡票").Range("p1").Value, To:=Sheets("連絡票").Range("q1").Value, Collate:=True, IgnorePrintAreas:=False Sheets("予定表").Select ActiveWindow.SelectedSheets.PrintOut From:=Sheets("予定表").Range("y1").Value, To:=Sheets("予定表").Range("z2").Value, Collate:=True, IgnorePrintAreas:=False Sheets("配車表").Select ActiveWindow.SelectedSheets.PrintOut From:=Sheets("配車表").Range("s1").Value, To:=Sheets("配車表").Range("t2").Value, Collate:=True, IgnorePrintAreas:=False Dim str As String str = Worksheets("連絡票").Range("r1") Worksheets(str).Select End Sub いろいろ解らないなりに書き換えをしてみましたが、やっぱり2番目のシートから印刷ができません。 教えていただけませんでしょうか。

  • Excel で一つのシートを2枚に分けて印刷(:2)

    前に印刷範囲のマクロ設定を教えていただきました。 __________A______B_____C_____D 1_______名前____金額__日付__ 2______あああ__55555___6___kkk 3______いいい__________6___hhh 4______ううう__33333___6___ppp --------------------------------- 5______えええ__44444___8___ggg 6______おおお__77777___8___lll 7______あいう__22222___8___rrr 8 9_______合計_iiiiii_____________ 8 の空行と 9 の合計行がある場合、印刷範囲を A1:D4 と A5:D7 までとし、合計欄は印刷範囲外とするにはどうしたらよいでしょうか。教えて下さい。よろしくお願いします。 8,9 行がない場合は次のコードでした。 Sub Test()  Dim i  i = 3  Do Until Cells(i, 3) = ""   If Cells(i, 3).Value <> Cells(i - 1, 3) Then    Rows(i).Select    ActiveWindow.SelectedSheets.HPageBreaks.Add _           Before:=ActiveCell   End If   i = i + 1  Loop  'ActiveSheet.PrintOut End Sub

  • No.を指定して印刷したい

    以前に、『EXCELでNo.を変えて印刷したい』というタイトルで質問をしてVBAの記述を教えてもらって解決したのですが、引き続き利用することになりできればVBAの画面からではなくEXCEL上でNo.を指定して印刷をしたいのですが、どうすればいいでしょうか? im i As Integer For i = 1 To 500 ←この部分を印刷指定ボタンを押せば番号を入力できるようにしたい!(例:管理No.0100~0120と入力したら管理No.が0100~0120の20枚が印刷される) Range("A1").Cells = "No." & Format(i, "0000") ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True DoEvents Next i

  • 【エクセル】 連続印刷する際のマクロの記述について。

    いつも大変お世話になっております。 エクセル2003のマクロの記述についてご教示のほど お願いいたします。 シート2にシート1の名簿から住所氏名等を落とし込み出来るように様式を作っています。 このシート3には、以下のVBAが設定してあります。 ********************************** Sub osieteinsatsu02() ' Dim start As Long Dim stp As Long Dim i As Long start = Range("a1") stp = Range("c1") For i = start To stp Range("a1") = i Sheets("Sheet2").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets("sheet3").Select Next End Sub ********************************** ↑ このシートのA1の値(名簿番号)~C1の値の人のデータをシート2に落とし込み、 シート2に行き様式を一枚印刷する。 このように記述してあると思います。 ところで、様式の中に複数名をまとめたいと思いますので、例えば、A1の値を変えるときに4つ置きに変化させるにはどのように記述すれば良いのでしょうか? 1、6、11、16、、、C1の値までで止まる。 どうぞよろしくお願いします。

  • ブックの中の1枚だけ選んで印刷したい

    win7とExcel2007でマクロ作成中の初心者です。 以下、ファイルの中の複数シートを印刷できました。 Private Sub 請求書印刷_Click() Application.ScreenUpdating = False Unload Me 請求書の印刷100 '請求書印刷 Worksheets(1).Select ActiveWindow.DisplayHorizontalScrollBar = False End Sub Sub 請求書の印刷100() ' Dim i As Integer For i = 1 To Worksheets.Count - 8 With Worksheets(i) If .Range("F11").Value <> 0 Then .PageSetup.PrintArea = "$B$1:$U$44" .PrintOut End If End With Next i Worksheets(1).Activate End Sub ------------------------------------ 今度は、同一のファイルから、指定の単一のシートを印刷したいので 以下のコードを実行すると、 Private Sub 単数印刷_Click()' Application.ScreenUpdating = False Unload Me Unload G印刷 Dim i As Integer With 名簿リスト2 For i = 0 To .ListCount - 1 If .Selected(i) Then 請求書の印刷範囲200 ' Worksheets(.list(.ListIndex)).PrintPreview Worksheets(Split(.list(.ListIndex - 0), " ")(1)).PrintPreview ' End If Next i End With ActiveWindow.DisplayHorizontalScrollBar = False GH印刷.Show End Sub Sub 請求書の印刷範囲200() ' ActiveSheet.Unprotect Dim i As Integer For i = 1 To Worksheets.Count - 8 With Worksheets(i) .PageSetup.PrintArea = False '印刷範囲のクリア If .Range("F11").Value <> 0 Then .PageSetup.PrintArea = "$B$1:$T$44" End If End With Next i Worksheets(1).Activate End Sub 以下の行が黄色くなりマクロがエラーとなり停止します。 エラーは 実行時エラー9 インデックスが有効範囲にありません となります。 Worksheets(Split(.list(.ListIndex - 0), " ")(1)).PrintPreview ' これと同様のファイルで試すと何なく1枚だけ印刷できました。 このエラーの原因はなんでしょうか?解決方法を教えてください。

専門家に質問してみよう