• ベストアンサー

エクセル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/17069)
回答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

専門家に質問してみよう