• ベストアンサー

エクセル VBA 条件つきの印刷

エクセルVBAにおいて、 例えば「セルA1が空白でないシートすべてを印刷する」 このようなコードは可能でしょうか? よろしくお願いします。 (エクセル2000)

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 Sub Test1() Dim sh As Worksheet For Each sh In ActiveWorkbook.Worksheets  If sh.Range("A1").Value <> "" Then   sh.PrintOut 'Preview:=True  End If Next sh End Sub 単に、こんな風にすればよいのですが、VBAを動かす前に、印刷範囲だけは確認したほうがよいかもしれません。 --それなら、VBAの意味がないではないか、と思うかもしれませんがね。(^^; もちろん、それはそれなりに方法はあるのですが。-- 印刷というのは、一旦、印刷が始まると、とまらないわけですから、それで、こんなことを言っています。 sh.PrintOut Preview:=True 最初は、こんな風にして、プレビューで調べてから、印刷実行という方法もあります。

taka1012
質問者

お礼

ご回答ありがとうございます。 ご丁寧な解説に感謝致します。

その他の回答 (2)

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

「可能でしょうか」ってどれだけやってみたのか。 ーー まずどういうVBAコードの、要素技術がいるのか考えましたか。 (組み合わせる前の、小さい単位での、したいことができるコード) 2,3しかないよ。 ーー (1)セルA1が空白でない これぐらいIf文を使って書けるでしょう。 (2)印刷する マクロの記録で判る シート指定.Range("A1:H30").PrintOut のようなコード (3)繰り返しになることはわかるね。 繰り返しは For  Next For Each Next をまず考える。 「すべて」はおのずから限度はあるわけだが、この際は読み込んだブックの全てのシート ーー (3)は Sub test02() Dim sh As Worksheet For Each sh In ActiveWorkbook.Worksheets MsgBox sh.Name Next End Sub で、全シート名 がでることを確認して納得のこと。これにMsgBox sh.Name のところが、選別、処理(=印刷)を入れる箇所になるのは分かるだろう。 (2)の「シートの指定」の部分に、Sh がそのまま使えるよ。 セルA1も、シート名 「Sh.」 で限定してね。Sh1.Range("A1")

taka1012
質問者

お礼

ご回答ありがとうございます。

noname#79209
noname#79209
回答No.1

ヒントだけですが... ブックのSheetコレクションから、For Each で全てのシートを順次取得し、 A1の内容をチェックして印刷する事になるでしょう。 このとき「空白でない」のチェック方法が問題です。 各シートのA11が完全なブランクだけならよいのですが、「""」も印刷したくないのでしょうから、 このチェックも加えておかないと「アレ?」ということになります。

taka1012
質問者

お礼

ご回答ありがとうございます。 何とか頑張ってみます。

関連するQ&A

  • エクセル VBA ある条件でセルに色をつけたいのですが、

    エクセル VBA ある条件でセルに色をつけたいのですが、 例えば、A2からA50に文字列が入っていて、ある処理を終えると、空白を除くセルに薄い水色(33)をつけます。ここまでは、VBAで作成できました。 次に、空白を除くセルが、すべて薄い水色になったら、A1を薄い黄(36)にしたいのです。 教えてください。よろしくお願いします。

  • エクセルVBAで

    エクセルのVBAでやりたいことがあるのですが、 一枚のシートのセルA1に1が入っているとします。そこで自動でA2に2、B1に3、B2に4といったようにセルの値を一つずつ増やていったものを連番で10枚印刷しようと考えているのですがうまくいきません。ご教授願います。

  • Excel マクロ・VBAの印刷方法について

    急ぎの回答です!! 関数式の入っているセル(空白表示)を印刷範囲に入れずに印刷する方法を教えてください。 別シートのデータを関数で引っ張てきてひな形のセルに表示しています。 行→$1:$6 列→$A:$Agは印 刷タイトルに設定。 A列7行目から1.2.3... とNo.が入っており、 B.~J. 列7行目からはデータが最終の50まで入力してます。( 関数式=IF(COUNTIF(コード,$S$1)<ROW(A1),"",OFFSET([元リスト.xlsx]商品一覧!A1,MATCH($S$1,コード,0),1)) ) K.~AG.列7行目からは書式データ(同じ文面の繰り返です。最終の50まで入っています)B~J列の7行目から関数(データ)=IF(COUNTIF(コード,$S$1)<ROW(A1),"",OFFSET([元リスト.xlsx]商品一覧!A1,MATCH($S$1,コード,0),1))をコピぺと一部を変更しセルへ入力して別シートからデータを引っ張てきてます。この関数だと該当する値がない場合はセルは表面上は空白セルに見えますが、セルには数式が入っている状態です。セルデータの最終行を習得し印刷に設定すると関数入力されているところで最終行と認識し、関数式を入れている50行まで印刷してしまいます。 したいことは、データが表示されている30行までなら30行まで印刷という感じにはできないでしょうか? シートを様式一枚ずつ作成しており、1ブックには20シートずつ保存しています。そしてこのブックはおよそ30ブックあります。 1ブック内の全てのシート(20シート)に反映できるようしたいです。 ※30行までデータが表示されている場合、C~Jには途中とちゅうで空白欄がありますが、B列は30行全てデータの表示(該当する場合)されます。 Excel マクロ VBA に詳しい方回答お願いします! B7からはB56まですべて関数式を入力しています(最大50までデータが表示されるように) シート枚数と、元のデータ数が行で7000程とかなり多く、このような関数式になりました。できればマクロ、VBA等での処理が望ましいです(時間がないので><)よろしくお願いいたします!!!

  • EXCEL VBA 印刷

    EXCEL VBA 印刷 初歩中の初歩で申し訳ありません・・・該当シート(Sheet1(名前は別名))の印刷をしたいと思い、ボタンの設定をしたのですが エラーとなります(画像を添付します。) お手数ですが、フォローの程宜しくお願いいたします。 参考までにコードも記載します。 Private Sub CommandButton9_Click() Range("A137").Select End Sub --------------------------上記はこんぼボックスで該当セルへジャンプしています。 Sub 印刷の実行() Worksheests("Sheet1").PrintOut End Sub

  • エクセル Excel VBA 条件つき印刷

    こんばんわ。 Excel VBAの設定について,質問です。 Officeのバージョンは,2007です。 例えば… セルA1の番号を,印刷設定された番号を最初として, 数字を変更しながら,印刷設定された枚数分印刷する。 といった設定はどの様にするのでしょうか? 色々試してみたのですが,うまくいかなくて… 印刷設定 2~5 だった場合… セルA1を2→3→4→5と変更しながら 合計4枚印刷したい。 どうぞ,よろしくお願いします。

  • Excel VBAで印刷ジョブを一つにしたい

    Excel VBAを使用して、シートAの元データの表の一行目から、 決められたセルに5レコードずつ読み込んで表示させる AccessのレポートようなシートBを作りました。 シートAには約500レコードあり、 シートBのページ数は約100ページ分になります。 このシートBの100ページを一度に印刷したく マクロを組み、ページを変えながらPrintOutメソッドで 印刷をしてみましたが、 プリンタのジョブが多くなりすぎて困っています。 Excelのみで、別のブックを使わずに解決する方法を探しています。 何か良い方法はないでしょうか。 よろしくお願いします。

  • エクセルvba初心者です・・・

    エクセルvba初心者です・・・ シート1にあるひとつのセルをコマンドボタンを押した時にそのセル内の文字列をシート2にかいていくようなプログラムをつくりたいです。 例えば シート1のセルに文字入力→”田中”→登録ボタンおす→シート2のセルA1にはいる シート1のセルに文字入力→”竹山”→登録ボタンおす→シート2のセルA2にはいる                  ・                  ・                  ・ というようになるコードわかる方いたら教えてください。おねがいします。

  • エクセルVBAで関数が入った空白セルの取得

    エクセルVBAで下記のようなセルの参照をしたいのですが、よろしくお願いします。(エクセル2002です)   A  B  C  D  E  F 1 78 80 セル(A1)(B1)には値も関数も入れられています。 セル(C1)(D1)(E1)には値は入っていませんが、ワークシート関数が組み込まれており空白となっています。(関数の""にて空白) セル(F1)には何も入力されていません。 今回はセル(B1)の80の値を取得できるようにVBAで下記のようにコードを組みました。 Range("F1").End(elToLeft).Activate そうすると、セル(E1)に関数があるために(?)(E1)がアクティブな状態となります。 関数が入力されていても空白として(B1)をアクティブな状態にするために良い方法はありますでしょうか? 誠に申し訳ございませんが、よろしくお願いします。

  • エクセルVBAにて選択したセルが空白の場合任意のシートに飛ばした

    エクセルVBAにて選択したセル(A1とします)が空白の場合任意のシート(Sheet2とします)の任意のセル(B1とします)を選択させる場合どのようにしたらよいでしょうか?

  • ExcelのVBAについて。

    ExcelのVBAについて。 画像のようなコードを利用してセルに入力時の日付時間を自動的に付加させたいのですが、、 VBA初心者な為に上手くいきません。 コード自体はサイトのを切り貼りして使えるのですが、これ以上の応用例に行き着けません。目的としては、データベース的に、あと入力数値から特定文字を抜き出して変数を当て嵌め文字列の語呂を当てます。様式はまだ作成中ですが、ある種の図表化してプリントアウトまでしたいと思っています。 何が上手くいかないか、まず自動的に付加させる所は何となく出来ているので、これをシート1とした場合に、シート2に図表化した転記内容を構成し、、シート1入力、シート2表示、またシート1A3セルに戻るというコードにしたいです。 この記述は不味いとかこうこうああした方が良いというアドバイスや指摘をお願いします。 よろしくお願いします。

専門家に質問してみよう