• ベストアンサー

エクセル2007(VBA)で選択セルを1枚に印刷する方法

表題のとうりなのですが・・・ VBAで例えば("A1:K2")という範囲と("A125:K244")という範囲を 1枚のA4紙に印刷したいのですが・・・ With Worksheets("A") .PageSetup.PrintArea = "A1:K2,A125:K244" .PrintPreview End With とすると A1:K2の範囲とA125:K244の範囲が1枚ずつ2枚にわかれて印刷されてしまいます。 始めたばかりの素人で大変困っております。 ご教授お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

用紙サイズによって、一枚では無理かもしれませんが、 印刷範囲をA1からK244に設定し、不必要な行を非表示とすれば可能です。 With Worksheets("sheet1") .PageSetup.PrintArea = "A1:K244" '///印刷範囲内で印刷したくない行を非表示にする Rows("3:124").Select Selection.EntireRow.Hidden = True Range("M134").Select '///ここまで .PrintPreview End With 印刷後に下記コード実行させて、再表示させることが必要ですけど。 Rows("3:124").Select Selection.EntireRow.Hidden = False Excel2007動作検証済み。

casino5
質問者

お礼

ありがとうございます。 助かりました。 セルを選択しようと考えずに印刷したくないところを表示しなければ いいのですね。 これからも勉強させていただきます。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

印刷用のシートを1つ特別に決めて、そこに印刷するセル・セル範囲を、VBAで元の印刷するセル・セル範囲の値を見やすいように編集しつつ持って(値を代入し)きて、その印刷用のシートの「単一セル範囲」を印刷するようにしないとだめと思います。 改行・改ページしないで印刷するような(Range)PrintOutのような類似メッソドはエクセルVBAには無いと思います。 Sub test01() With Worksheets("Sheet1") .Range("A1:D1,A3:D3").PrintPreview End With End Sub では2ページになってしまいます。 腹が立つ点だがやむをえない。 フォームなどにデータを編集して印刷する手も同じです。

casino5
質問者

お礼

回答ありがとうございます。 印刷用のシートを1つ特別に決めて、そこに印刷するセル・セル範囲を、VBAで元の印刷するセル・セル範囲の値を見やすいように編集しつつ持って(値を代入し)きて、その印刷用のシートの「単一セル範囲」を印刷するようにしないとだめと思います。 ↑ やってみます。 なんか、どんどん重くなっていく感じで・・・ もっとうまい人がVBAを使えば軽くなりそうな気がします・・・ 勉強します!!! ありがとうございました。

回答No.3

すみません、No2で回答したtakachan7272です。 私が付け加えたコードで Range("M134").Select は余計でしたね。 やり方は分かっていただいたようなので大丈夫だと思いますが・・・

casino5
質問者

お礼

わざわざ補足まで丁寧にありがとうございました。 Range("M134").Select の部分は自分のほうで勝手に省かせて いただきました。

noname#99913
noname#99913
回答No.1

回答を待つより、必要な部分だけ別のシートにコピーするか、リンク式で呼び出す方が早いと思います。

casino5
質問者

お礼

返信ありがとうございます。 今後も使っていくものでしたので・・・

関連するQ&A

  • 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ページに印刷することは不可能なのでしょうか? 博識な方いらっしゃいましたら、ご教授いただければと思います。 よろしくお願い致します。

  • エクセル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

  • 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コード

    エクセルシートの印刷範囲を設定する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 としても、全部が印刷範囲として選択されてしまいます。 というか、印刷範囲が設定されません。

  • 2ページ目以降の行タイトルを3行目にしたいのですが

    1ページ目は普通に印刷して、2ページ目以降の行タイトルを3行目にもって行きたいのですが、どの様にしたらいいか教えて下さい。 宜しくお願いします。 With Worksheets("Sheet1") .PageSetup.PrintTileRows = "$A3:$P3" .PageSetup.Orientation = xlLandscape .PageSetup.PrintArea = Range("A1",Range("P65536").End(xlUp)).Address .PrintPreview End With

  • ブックの中の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枚だけ印刷できました。 このエラーの原因はなんでしょうか?解決方法を教えてください。

  • Excel2003 VBAで印刷 セル指定

    よろしくお願いします。 ボタン5をクリックしてある範囲を印刷したいのですが、私が知っているものはセル指定でActiveSheet.PageSetup.PrintArea = Range("A90:K130") であれが印刷可能なのですが最後の行までにしたいのですがどうしてもうまくいきません。 ActiveSheet.PageSetup.PrintArea = Range(Cells(90, 1), Cells(r, 11)) それと同時に11列全部(文字は小さくてもいいのですが)一枚に印刷したのですが よろしくお願いします。 Private Sub CommandButton5_Click() res = MsgBox("決済記録を印刷します", vbYesNo + vbQuestion) If res = vbYes Then r = Range("A65536").End(xlUp).Row + 1 'Range(Cells(90,1),Cells(r,11)) '印刷したい範囲 ActiveSheet.PageSetup.PrintArea = Range("A90:K130") ActiveSheet.PrintOut preview:=True End If End Sub

  • Excelマクロで印刷範囲の指定をしたい

    Excelで一覧表を作成し、 『印刷A3』と『印刷A4』というボタンを作り、 それぞれ印刷範囲が異なるようにマクロを組みたいと思い、『印刷A3』の場合は下記のマクロで問題ありませんでした。 【印刷A3】 ------------------------------------------------- Sub 印刷A3_Click() Worksheets(7).PageSetup.PrintArea = _ Range("A6").CurrentRegion.Address With Worksheets(7).PageSetup .Orientation = xlLandscape .PaperSize = xlPaperA3 .Zoom = 63 End With Worksheets(7).PrintOut Preview:=True End Sub ------------------------------------------------- セルA6以降の入力されているセルを選択できるのですが、『印刷A4』の場合は、列の範囲を23列までとし、23列目以降は印刷範囲外としたいです。 (列は最大で33列まであります) 行は『印刷A3』と同じように、入力されている全てのセルを範囲としたいです。 マクロ初心者のため、教えていただけると助かります。 よろしくお願い致します。

  • エクセルVBA

    エクセル2003です エクセルの印刷レビュ-までのマクロをおしえてください *A列からQ列までで行は1~150で伸縮します  最終行をA5より下のA列のセルに値が連続で入っている最後が最終印刷範囲行とします *罫線ありです *1ページを30行とします *2ページ目からの先頭行に(A7:Q7)を印刷に入れたい *ヘッダーは右上に日付 *フッダーは右下にページ 現状では罫線で最終行が決まってしまいます 現状コード Sub 印刷() With ActiveSheet.PageSetup .PrintTitleRows = "$7:$7" .PrintTitleColumns = "" End With ActiveSheet.PageSetup.PrintArea = Range("A1:Q1").Resize(Range("A" & Rows.Count).End(xlUp).Row).Address With ActiveSheet.PageSetup .RightHeader = "&""MS Pゴシック,太字 斜体""&14&D" .RightFooter = "&""MS Pゴシック,太字 斜体""&14&P/&N" .PaperSize = xlPaperA4 .Zoom = 75 .PrintErrors = xlPrintErrorsDisplayed End With ActiveWindow.SelectedSheets.PrintPreview End Sub 罫線ではなくA列のセルに文字列等が入っている行を最終行にしたいのですが 教えて頂けないでしょうか? 出来れば説明付きでよろしくお願いします

専門家に質問してみよう