• ベストアンサー

エクセルでデータがあるシートだけ印刷するマクロ

エクセルのマクロで印刷するマクロを使っていますが、5つある ワークシートを全て選択して印刷するマクロでこれをデータ(数値)が 入っているワークシートだけ印刷するマクロにしたいのですがどのようにすればいいのでしょうか?

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

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

こんばんは。 以下のようにするのが一般的です。 Sub test1() Dim sh As Worksheet For Each sh In Worksheets  '数値のみ '文字を含むなら、CountA です。  If WorksheetFunction.Count(sh.Cells) > 0 Then    ''sh.PrintOut '印刷  End If Next End Sub

その他の回答 (2)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

何を対象で判断するのかが、はっきりとはわかりませんが・・・ それぞれのシートでUsedRangeあるいは、SpecialCells()などを利用してデータの有無を判定すればよいのでは? 例えば  sheet.cells.SpecialCells(xlCellTypeConstants, 23) で、データ(数値、文字など)の入力されているRangeが返されます。  sheet.cells.SpecialCells(xlCellTypeFormulas, 23) で、同様に式の入っているRangeを得ることが可能です。 (「編集」-「ジャンプ」-「セル選択」とほとんど同機能) (Rnage.Countで対象セルの個数を得ることも可能です) ただし、この方法の場合、該当セルがない場合はメソッドがエラーになるようですので、これを利用して判断すればよいかも。 UsedRangeは使用したレンジの範囲(矩形に変換)を返します。 こちらは、対象がない場合でも最低A1セルの1ヶ所が返されるようなので、個数だけでは単純に判断できません。 また、式や値をデリートしているセルでも(実際は何も入力されていない)、完全にクリアーされていないとカウントの対象になるようですので、注意が必要です。 (念のため、ForEachなどで各セルの内容をチェックする必要があるかもしれません。) どのような判定をしたいのか不明ですので、質問者さんの使用状況に応じて選択してご利用ください。 それぞれの、詳細についてはヘルプなどを参照してください。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

>データ(数値)が入っているワークシート これはどのようにして判定しますか? 特定の行などにデータが入っているとデータがあると判定するのか、 シートでセルが一つでも使われていたらデータがあると判定できるのか? はたまた別か? などなど。

関連するQ&A

  • エクセルマクロ超初心者で、悩んでます。

    エクセルマクロ超初心者で、悩んでます。 どなたか助けてください。 悩みはこうです↓ データ用のワークシートのセルに数字、文字が入力してあります。 セルの数値同士の引き算で算出した数値を列数として、別の印刷用のワークシートのセル番地(列、行)に、「文字」を表示したいのです。 日本語で書いちゃうと ワークシート「印刷用」の、あるセル番地(ワークシート「データ用」から、列数はJ1‐A1、行数はのB1の数値)に ワークシート「データ表」のC1の文字 を出力せよ です。 Worksheets選択がうまくいきません CellsかRangeを使うのかと思いますが、引き算する表現がわかりません・・ 文例があれば、稚拙ながら活用できるかなと思います。 よろしくお願いします!

  • Excelの印刷マクロについて

    Excelにて、1枚のシートに他のブックの全てのシートの名称を記述し、選択したシート全てを印刷するマクロを組みたいと考えています。 数日前から考えているのですが、検討が付かず困っています。 何方かご教授願えれば幸いです。 よろしくお願いします。

  • EXCEL 選択したシートのデータをまとめるマクロ

    EXCEL2010で質問です。 シート1~10まであったとします。 そのうち、シート3~5を選択しておいてマクロを実行すると、新しいシートにシート3~5のデータをまとめるマクロを教えて下さい。 ファイルの全てのシートをまとめるマクロを見付けたので何とかしようとしたのですが、全然歯が立たずで(>_<) すみません。よろしくお願いいたします。

  • エクセルのデータをまとめて印刷

    一つのフォルダの中に複数のエクセルのデータがあります。さらにその一つ一つに複数のシートがあります。 このフォルダ下のエクセルデータ(全てのシート)を一括印刷したい場合どうすればいいのでしょうか? 色々調べたらそのフォルダのウィンドウの開いて、印刷したいエクセルのデータを選択して「ファイル」⇒「印刷」とすれば複数のエクセルデータを印刷できるのは分かっています。 けれど、このやり方だと全シートは無理ですよね? 何か良い方法を教えてください。 よろしくお願いします。

  • エクセルワークシート上に印刷開始ボタンのマクロをつくりたい

    昨日同様の質問しましたが、誤字があったので 再度ご質問させていただきます。 ワークシート上に印刷開始用のボタンを作りたい。 印刷開始のマクロの設定がまずわかりません。 マクロが出来ればそれのボタンを作れば良いと思います。 詳しい手順が判りません。 ちなみにエクセル2007です、宜しくお願いします。

  • エクセル 複数シートの編集と印刷

    エクセルでシート1~3に月別のデータが入っています。 (データ形式は同じです) この1~3のシートのデータをコピペして一つのシートにまとめ これを印刷にかけたいのですが、 シート1のデータしか印刷されませんでした。 シート上の見た目は1~3すべてのデータが一つのデータとして まとまった状態で閲覧できる状態ですが プレビューにするとやはり「シート1」のデータしか閲覧できません。 とりあえずすべてのデータを範囲選択して印刷をかけたら きちんと望みどおりのすべてのデータが印字されたのですが この場合、範囲選択しなくても普通に印刷できないのでしょうか? なぜ、こんな風になってしまうのでしょうか? 表現が不足であれば補足しますのでご指導願います。

  • 印刷後データを変更し、また同じ雛形で印刷を繰返しをマクロで行いたい。

    印刷後データを変更し、また同じ雛形で印刷を繰返しをマクロで行いたい。 シート1に印刷用の雛形があります。 セルの指定された10ケ所くらいに手入力後印刷しています。 この10ケ所の入力内容は別ファイルに有りますが そのファイルは夜間バッチで毎日更新されます。 またそのデータは今日は20行だけど明日は15行とデータ量が日々変わります。 シート2にこのデータファイルを貼り付けて そのシート2のデータの1行目(A2からJ2)の各値を シート1の所定の場所に値を貼付しシート1を1枚印刷。 その後シート2の2行目(A3からJ3)のデータを シート1の所定の場所に値を貼付し印刷。 これをシート2のデータ分(行です)繰り返し シート2のデータ(行です)がなくなったら メッセージBOXで「印刷終了」と出て印刷が停止。 というのをシート1に作成したボタン一つで行いたいです。 (シート2の値をシート1に貼付するのはマクロの記録で完成しましました。  でも駄目です(T_T)当たり前ですがデータ10行の時のマクロ記録では  データが15行の時11から15行目は無視されます。  Do Loop で対処可能でしょうか?) なおシート2にデータを貼り付ける時の データ選択はエクセルの「ファイルを開く」の小画面を表示させて 使用者に選択させたいです。 ↓ fName = Application.GetOpenFilename Application.ScreenUpdating = False Set fso = CreateObject("Scripting.FileSystemObject") dPath = fso.GetParentFolderName(fName) 1.シート1の「ファイル選択」ボタンを押す。 2.ファイルを選択する。(開くをクリックすると同時にno.3が自動で行われる) 3.シート2に選択ファイルが貼り付き選択されたファイルは閉じる。 4.シート1の「印刷」ボタンを押す。 5.マクロの記録どうりにシート2の2行目の値がシート1に貼り付く 6.シート1が印刷され、シート1の値がクリア。 7.マクロの記録の法則にならってシート2の3行目の値がシート1に貼り付く 8.シート1が印刷され、シート1の値がクリア。 9.シート2のデータがなくなるまで繰り返す。 10.シート2のデータ分だけ印刷したらメッセージが出る。 データを変更して繰り返して印刷の部分が参考書やWEB検索でなかなか見つかりません。 ご教授をお願いします。

  • エクセルのマクロについて

    エクセル2010でのマクロについて、教えてください。 「全体を選択」→「昇順で並び替え」というマクロはどのように書けばできますか? マクロの記録でやると、そのシートでしか使えないマクロになってしまいますが、 データ量も違う色々なシートで使用したいのです。よろしくお願いします。

  • マクロのワークシート変換でエクセルシートを取込ました。テスト用のデータ

    マクロのワークシート変換でエクセルシートを取込ました。テスト用のデータが200件でそれは上手くいったのですが、次に件数を変更(200件から1件に減らしました)してマクロを走らせると、データ1件、空白199件の結果になりました。取込むファイル名は毎回同じですが、件数は可変します。この場合はどのように設定をすればいいのかお教えいただきたく思います。件数を増やした分にはそれは取り込んだのですが、減らした分がダメなようです。

  • エクセルのマクロで、印刷設定をしたいのですが可能でしょうか?

    エクセルのマクロで、印刷設定をしたいのですが可能でしょうか? お世話になっています。 会社での作業を少しでも効率よく出来ないものかと、以下のようなことを考えています。 エクセル2003を使用していますが、下記のような動作をするマクロを組むことは可能でしょうか? よろしくご教授ください。 Sheet1は、入力用のシートとして使っています。 Sheet2は、Sheet1に入力された商品データなどから、必要な箇所のみ反映されるように設定しています。 このシートは、罫線などが存在し表形式になっており、全てを印刷するとA4用紙6枚分になります。 そこで、Sheet1(入力用のシート)のJ18セルに文字が入力された場合は、Sheet2(印刷用のシート)の1ページだけを印刷したく、Sheet1のj27セルに文字が入力された場合は、Sheet2の2ページまで・・・ Sheet1のJ36に文字が入力された場合は、Sheet2の3ページまでという風に印刷範囲を設定しなくても印刷出来るようにしたいのです。 よろしくお願いします。

専門家に質問してみよう