VBAサンプル集
印刷ダイアログを使用する(xlDialogPrint)

ExcelマクロVBAの実用サンプル、エクセルVBA集と解説
最終更新日:2013-06-04

印刷ダイアログを使用する(xlDialogPrint)


入力しやすいように、セルに色をつけている事が多いと思いますが、


印刷時には、ちょっとじゃまな場合もあります。


インク(トナー)も無駄ですしね。


印刷時に色指定を解除して印刷する方法になります。


Sub sample()
  Dim rtn As Boolean
  ActiveSheet.Copy
  ActiveSheet.Cells.Interior.Color = xlNone
  rtn = Application.Dialogs(xlDialogPrint).Show
  ActiveWorkbook.Close SaveChanges:=False
  Select Case rtn
    Case True
      MsgBox "印刷されました。"
    Case False
      MsgBox "印刷がキャンセルされました。"
  End Select
End Sub

Application.Dialogs(xlDialogPrint).Show
印刷タイアログを表示します。

プリンター等、その都度自由に選択できますので、便利だと思います。


他は、シートをコピーし、色指定を消しているだけです。


上記マクロをボタン等に割り当てれば、便利に使えると思います。



先日、ツィッターで、


ブック印刷時に、特定のシートを印刷したくない、でもプリンターは選択したい、


というツイートを見ましたが、


その場合は、以下のマクロで良いでしょう。


Sub sample2()
  Dim rtn As Boolean
  Dim strSht As Variant
  Dim i As Integer
  strSht = Array("印刷しないシート1", "印刷しないシート2")
  For i = LBound(strSht) To UBound(strSht)
    Sheets(strSht(i)).Visible = False
  Next i
  rtn = Application.Dialogs(xlDialogPrint).Show
  For i = LBound(strSht) To UBound(strSht)
    Sheets(strSht(i)).Visible = True
  Next i
  Select Case rtn
    Case True
      MsgBox "印刷されました。"
    Case False
      MsgBox "印刷がキャンセルされました。"
  End Select
End Sub

このマクロをお好きなボタンに設定すれば完了です。


印刷ダイアログを使用すれば簡単に解決できますね。




同じテーマ「VBAサンプル集」の記事

罫線を簡単に引く(Borders,BorderAround)

エクセルでは、罫線を引く事が多いです。この罫線は、以外に処理時間もかかりますし、やり方によっては、VBAの行数も多くなります。とにかく、簡単に罫線を引く方法です。以下の表を作成する場合です。罫線を引く順番等、いろいろありますが、とにかく短いコードにしてみます。
マクロVBAの開始時と終了時に指定しておくべきApplicationのプロパティ
マクロVBAの開始時および終了時に指定した方が良いApplicationのプロパティの開設です。特に重要なもの、マクロVBAの処理速度に関係するものを紹介します。Applicationのプロパティの詳細については以下をご覧ください。
オートフィルター(AutoFilter)
エクセルでは、定番機能のフィルターです。「Sheet1」のA列でフィルターし、「Sheet2」へコピーします。ごく基本的なフィルターです。フィルターのセル範囲指定は、いろいろな指定が可能です。「連続セル範囲の選択 」も参考にして下さい。
日付のオートフィルタ(AutoFilter)
とても便利なオートフィルターですが、日付となると、結構大変です。以下の表で説明します。普通は、こんなように指定します。Operator:=xlFilterValues は2007以降で追加された機能です。
印刷ダイアログを使用する(xlDialogPrint)
名前定義の一覧と削除(Name)
名前定義は使い方によっては、とても便利な機能ですが、長く使っているブックでは、とても多くの名前定義が入ってしまっていたり、参照エラーを起こしている名前定義が多数あったりと、管理に困る場合も多々出てきます。これらが発生する原因としては、ブック間のシートコピーで増えていってしまったり、シートおよびセルの削除によって参照エラーになったままにしておくことで、
シートを名前順に並べ替える
シートを名前順に並べ替える方法になります。配列を使っていますが、配列が難しい場合は、シートに書き出して処理すれば良いでしょう、並べ替えもシート上なら簡単です。上記では、シート名を文字列として処理しています。
数式内の不要なシート名を削除する(HasFormula)
複数のシートにまたがる数式を入力していると、自身のシート名!が数式についてしまいます、この自身のシート名!は不要であり、式を見づらくしてしまいます、この不要なシート名を、VBAで一括削除します。ブックの全シート、全セルを対象として、数式の中から、自身のシート名!を削除するVBAになります。
数式の参照しているセルを取得する
セルに入っている数式の参照しているセルを取得するには、RangeのPrecedentsプロパティを使いますが、このプロパティは他のシートの参照には対応していません。また、セルの参照先を取得するプロパティには、Dependentsプロパティがあります。
増殖した条件付き書式を整理統合する
コピペによって条件付き書式は際限なく増加していきます、あまり増えすぎると、Excelの動作が遅くなる場合もありますし、条件や書式を変更したい時にも困ることになります。このような場合は、条件付き書式を消して再設定するしかなくなります、これを解決するVBAを考えてみました。
条件付き書式で変更された書式を取得する
条件付き書式が設定されている場合、当然ですが見た目は、本来そのセルに設定されている書式ではなく、条件付き書式の条件によって設定されている書式になります。VBAで、この条件付き書式によって設定された書式を取得します。これが取得できるようになったのは、Excel2010からですので、このページで紹介するVBAコードはExcel2010以降でのみ有効なものです。


新着記事NEW ・・・新着記事一覧を見る

トランザクション処理|SQL入門(12月11日)
インデックスを作成して高速化(CREATE INDEX)|SQL入門(12月9日)
他のテーブルのデータで追加/更新/削除|SQL入門(12月8日)
データの削除(DELETE)|SQL入門(12月7日)
データの更新(UPDATE)|SQL入門(12月6日)
複数のSELECT結果を統合(UNION,UNION ALL)|SQL入門(12月5日)
テーブルを結合して取得(INNER JOIN,OUTER JOIN)|SQL入門(12月4日)
データベースの正規化とマスタの作成|SQL入門(12月3日)
データベースにおけるNULLの扱い方|SQL入門(12月2日)
オブジェクト変数とは何か|VBA技術解説(12月2日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|VBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.マクロって何?VBAって何?|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.ひらがな⇔カタカナの変換|エクセル基本操作



  • >
  • >
  • >
  • 印刷ダイアログを使用する(xlDialogPrint)

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
    掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
    本文下部へ