• 締切済み

EXCELで複数のシートを同時に印刷範囲の設定する

質問No.4133551、boodori2000さん 2008-06-27 17:26:01のずいぶん以前のご質問の続きで、もしわ けありません。大変悩んでおりまして、何卒教えて頂きたくよろしくお願いいたします。    end-uさんの以下のご返答は理解させて頂きました、大変ありがとうございました。 Sub try2()   Dim ws As Worksheet      For Each ws In Worksheets     ws.PageSetup.PrintArea = "$A$1:$B$2"   Next End Sub 上記マクロを使用させて頂き、全てのシートの印刷範囲設定ができました。ありがとうございます! しかし、改ページ設定2ページ/シート(青い破線)をするため下記の文言を追加致しましたが、エラーが出てしまい ます。コンマの使い方がおかしいとのエラーがでます。、何がなんだか、、、1日かかっても解決できず悩んでおります。 何卒、どなたか、ご教授頂きたく Sub try2()   Dim ws As Worksheet      For Each ws In Worksheets     ws.PageSetup.PrintArea = "$A$1:$G$35","$A$37:$G$70"   Next End Sub 補足 "$A$1:$G$35"← 1ページ目の範囲 "$A$37:$G$70" ←2ページ目の範囲 どなたか、ご教授の程を何卒よろしくお願い致します。

みんなの回答

  • chie65535
  • ベストアンサー率43% (8525/19377)
回答No.1

>ws.PageSetup.PrintArea = "$A$1:$G$35","$A$37:$G$70" そういう指定は出来ません。 印刷範囲に設定できるのは「1つのエリアだけ」です。 改ページしたい場合は「1つの印刷範囲の中に、改ページを挿入する」と言う方法を取ります。 実際には、以下のようにします。 Sub try2()   For Each ws In Worksheets     ws.PageSetup.PrintArea = "$A$1:$G$70"     ws.Select     ws.Range("$A$37").Select     ws.HPageBreaks.Add Before:=ActiveCell   Next End Sub

atd3068
質問者

お礼

cheie65535様 大変ありがとうございました。出来ました!やった! VBAまったくの初心者です。これからがんばります!! 

関連するQ&A

  • エクセルVBAで保護したシート内の書式設定を可能にしたい

    お世話になります。 『記入可能セルに記入させ、「送信」フォームを押すと、1箇所文字の色が変わり、添付されてメールで送られる。』というマクロを組みました。 その後、 シートがたくさんあるので、VBAを使って、一度にシートの保護、非保護を行いました。 以下はその記述文です。 Sub 保護() Dim Ws As Worksheet For Each Ws In Worksheets Ws.Protect Password:=111 Next End Sub Sub 保護解除() Dim Ws As Worksheet For Each Ws In Worksheets Ws.Unprotect Password:=111 Next End Sub この保護のマクロを使うと、記入可能なセルは、セルの書式設定の保護タブからチェックをはずしており全く問題ないのですが、 「色が変わる」という設定がエラーになります。 どのようにしたら、色が変わるのも許可されるマクロになるのでしょうか。 ご教示お願いいたします。

  • VBAで印刷する前にプリンターの設定を変更する方法

    ○シート1の印刷ボタンで印刷するとシート1及びシート2が印刷されます。  シート2だけを印刷するには、どうしたらよいのですか。   ○現状  ・シート2は非表示  ・シート1に印刷ボタン(下記のVBAをマクロ登録済) ---------------------------------------------------------------------- Sub printappointedrange() Dim ws As Worksheet 'ワークシート Dim PrintFlg As Boolean '印刷するかの判定 On Error GoTo ErrorHandler 'エラー対応(非表示シート対応) Application.Dialogs(xlDialogPrint).Show 'プリンタ設定 Application.ScreenUpdating = False '画面更新ストップ For Each ws In Worksheets '全てのシートを調べる With ws Select Case .Name Case "シート2" .PageSetup.PrintArea = "A1:AB42" '印刷範囲の指定 .PrintOut '印刷 .PageSetup.PrintArea = "" '印刷範囲クリア End Select End With Next Exit Sub '終わり ErrorHandler: 'シートが非表示の場合 If Err = 1004 Then ws.Visible = True '表示する ws.PrintOut ws.Visible = False '非表示に戻す End If Resume Next '次の処理 End Sub --------------------------------------------------------------------

  • エクセルVBA印刷範囲指定とヘッダーフッター

    1か月のうちの前期と後期のシートがそれぞれあり、前期シートを範囲指定して領収書の一部を印刷したいのですがなぜか、前に作ったヘッダーとフッターが前期だけ印刷されてしまいます。 どこに隠れているのか謎なのです。前に悩みながら作ったシートがどこかに隠れているのでしょうか? また、同じ様式のシートなのですが前期は80%にしなくてもなぜか一枚に収まります。 不思議でなりません・・・全部消したはずなのですが Sub 印刷範囲設定領収書前期() With Worksheets("領収前期") .PageSetup.PrintArea = "G1:BB91" .PrintPreview End With End Sub Sub 印刷範囲設定領収書後期() With Worksheets("領収後期") .PageSetup.Zoom = 80 .PageSetup.PrintArea = "G1:BB91" .PrintPreview End With End Sub

  • 複数シートをVBAで印刷

    エクセル2010VBAを使って仕事の効率化を勉強中です。 歳入日計表のシート31日分を作り、歳入月計表として合計をまとめていますが 日々印刷範囲を決めて一日分のシート印刷するのをVBA処理したいのですが できません。 1日分はこんな感じでできるのですが・・・ 31日分をどのように処理すれば日々印刷可能になるのでしょうか? お願いいたします! Sub 日計表印刷設定() With Worksheets("1") .PageSetup.PrintArea = "A2:G71" .PageSetup.LeftMargin = 55 .PageSetup.TopMargin = 40 .PageSetup.Zoom = 80 .PrintPreview End With End Sub

  • どちらを使った方がいいでしょうか?

    Sub test1() Dim ws As Worksheet For Each ws In Worksheets Debug.Print ws.Name Next End Sub Sub test2() Dim ws As Variant For Each ws In Worksheets Debug.Print ws.Name Next End Sub どちらも問題なく実行されますが、 VBA的にどちらを使った方がいいでしょうか?

  • 印刷範囲を設定するvbaコード

    エクセルシートの印刷範囲を設定するvbaコードで Sub Macro1() With ActiveSheet.PageSetup .PrintArea = "$A$1:$c$10" End With End Sub としてるのですが、 "$A$1:$c$10"の部分を Range(Cells(1, 1), Cells(10,3)) 形式でやりたいのですが、 うまくできません。 Sub Macro1() With ActiveSheet.PageSetup .PrintArea = Range(Cells(1, 1), Cells(10,3)) End With End Sub としても、全部が印刷範囲として選択されてしまいます。 というか、印刷範囲が設定されません。

  • VBAの範囲印刷設定を修正したいのですが

    VBAの初心者です。詳しく教えてください。 1.下記のVBAでシートを非表示にしたときに実行時エラー1004が出るのですが  どうしたらよいのですか。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー Sub printappointedrange() Worksheets("シート1").Activate Range("A1:AB42").Select 'セル範囲の選択 With ActiveSheet .PageSetup.PrintArea = Selection.Address '印刷範囲の指定 .PrintOut '印刷 .PageSetup.PrintArea = False '印刷範囲のクリア End With End sub ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 2.シートに印刷ボタン作成して、印刷はできるのですが、印刷する前にプリンターの設定を変更する方法は無いのですか。

  • VBAにて、複数の選択範囲を1ページに印字したい

    ○開発環境○ OS:Windows7 EXCELバージョン:2010 お世話になります。 現在、EXCEL2010でVBAを使用して業務用のマクロを作成しております。 表題の通り、複数の選択範囲を1ページに印刷する必要があるのですが、 解決方法が分からず困っております。 最初は下記のような記述で印刷を試みたのですが、選択範囲ごとに改ページされてしまいます。  Worksheets("Sheet1").PageSetup.PrintArea = "A4:F10,A34:F37,A54:F57"  Worksheets("Sheet1").PrintPreview また、PrintAreaを続けて指定すればいいと紹介されているページを拝見し、下記のような記述も 試みましたが、最後の範囲だけしか印刷されませんでした。(バージョンが違うため?)  Worksheets("Sheet1").PageSetup.PrintArea = "A4:F10"  Worksheets("Sheet1").PageSetup.PrintArea = "A34:F37"  Worksheets("Sheet1").PageSetup.PrintArea = "A54:F57"  Worksheets("Sheet1").PrintPreview EXCEL2010では、複数の選択範囲を1ページに印刷することは不可能なのでしょうか? 博識な方いらっしゃいましたら、ご教授いただければと思います。 よろしくお願い致します。

  • 複数のエクセルシートをまとめるマクロ

    下は複数のエクセルファイルを一つにするマクロですが、100万件を超えるためcsvで保存するようにするにはどこを変更したらよいでしょうか。 よろしくお願いします。 Sub Sample() Dim t As Single Dim strPath As String Dim strFileName As String Dim WB1 As Workbook Dim WS1 As Worksheet Dim WS2 As Worksheet Dim lngRowCount As Long 'A列に値が入っているデータ数 t = Timer 'まとめたいシート Set WS2 = ThisWorkbook.Worksheets(1) strPath = ThisWorkbook.Path strFileName = Dir(strPath & "\*.xls*") Do While strFileName <> "" If strFileName <> ThisWorkbook.Name Then Set WB1 = Workbooks.Open(strPath & "\" & strFileName) Set WS1 = WB1.Worksheets(1) With WS1.Range("A1") lngRowCount = .Worksheet.Cells(.Worksheet.Rows.Count, .Column).End(xlUp).Row - .Row If lngRowCount >= 1 Then With .Resize(lngRowCount, 14).Offset(1) .Copy WS2.Range("A" & WS2.Rows.Count).End(xlUp).Offset(1) End With End If End With WB1.Close False End If strFileName = Dir Loop MsgBox "まとめ処理をしました。処理時間 " & Format((Timer - t) / 60 / 60 / 24, "h:mm:ss") End Sub

  • 複数のシートでマクロの実行

    ブック内の全てのシートで同一のマクロを実行させたいのですが。 Sub Test() Dim ws As Worksheet  For Each ws In Worksheets  処理内容   Next ws End Sub 上記の「処理内容」が以下だと成功します。 ws.Range("A1").Value = ws.Name が、以下だと(置換処理)、一番最初のシートしか実行されません。 Range("A1:G20").Select Cells.Replace What:="A", Replacement:="B", _ LookAt:=xlPart, SearchOrder _ :=xlByRows, MatchCase:=False, _ SearchFormat:=False, ReplaceFormat:=False 「Range("A1:G20").Select」の「Range」を「ws.Range」にすると、その行がエラーになってしまいます。 置換処理を全てのシートで実行させるためには、マクロをどのように直せばいいでしょうか?