エクセルVBAで行うプリント実行は、個別の環境次第でエラーやトラブルに成り易いものです。
ユーザー設定の用紙などは特に設定方法が環境依存的です。
問題解決します。
こんにちは、じゅんぱ店長(@junpa33)です。
エクセルVBAで印刷設定をする時には用紙サイズを指定します。
「A4」「A3」「A5」「B4」「B5」などメジャーな用紙サイズは、すでに設定値が割り振られているので、簡単に設定することが出来ます。
けれどもそれは、一般的なサイズの用紙の場合です。
プリンタードライバにあらかじめ設定されている用紙サイズ以外はどうするのか。突然、難易度MAXになります。
今回のテーマは、エクセルVBAでの印刷コード作成に必要な、ユーザー定義用紙の設定方法についてです。
「な~んだ これだけ?!」と思うほど簡単です。
(きっと、ググッて記事あさりした時間がもったいなかったと思うでしょう。)
ホントに? こっちはどれだけ悩んでると思っているんだ!
ねこ氏
うささん
まあまあ とりあえず、聞くだけ聞いてみましょうか。
エクセルブックをパスワードロックするユーティリティなマクロ
別々に保存のシートを一つのブックにまとめる。シート移転マクロ
シート名一覧表作成マクロをブック登録して色んなエクセルで使う
Excel ユーザー定義用紙の印刷設定 問題解決のVBAコード
マクロの実行を1クリックで!フローティングボタンをユーザーフォームで作る
Option Explicitとは何、必要? VBA記述で不注意なエラーを防止する
Excelで書類のナンバリング刻印は瞬殺作業になる。紙ベースのユーザー必見
エクセル文書の見出し 先頭文字を大きく目立たせるVBA Characters
エクセルVBA セル入力の文字を大きくする、太くする、色変更の簡単コード
コンテンツ
エクセルVBA 印刷用紙設定の方法
まずは、おさらいの意味で、印刷用紙設定の記述方法を確認しておきます。
- Worksheetオブジェクト.PageSetup.PaperSize = 定数
定数は、A4用紙であれば「xlPaperA4」とか、B5用紙であれば「xlPaperB5」とかになります。
印刷の向きについては、次のように記述します。
- Worksheetオブジェクト.PageSetup.Orientation = 定数
定数は、横向き「xlLandscape」、タテ向き「xlPortrait」になります。
ここまでは問題ないと思います。
ユーザー定義用紙のVBAでの設定方法
ユーザー定義用紙の設定で、まず最初にハマるのが、ユーザー設定「xlPaperUser」です。
Worksheetオブジェクト.PageSetup.PaperSize = xlPaperUser
これを記述していると、「一青窈のハナミズキ」の様に「♪ダメさが100年続きます♬」です。
ユーザー定義用紙のVBAでの本当の設定方法は、実はこの手順で設定すればバッチリOKです。
実は本当の設定方法は、
使用するプリンターのプロパティの中に「ユーザー定義用紙」を設定する項目があるので、使用したいサイズを登録する。
このブログ記事では、よくA6用紙(A4用紙の1/4サイズ)を使いますが、大体の場合、デフォルトではプリンターには用紙サイズがセットされていません。なので、自分的にはユーザー定義で登録をしています。
新規BOOKで良いので、「Book1(.xlsm)」を立ち上げます。
リボンの開発タブからVisual VasicでVBE(ビジュアルベイシックエディタ)を開いてください。
さらに挿入からモジュールウインドウを開いてください。
Sub 印刷設定用紙定数値()
Dim TV As Integer
ActiveWorkbook.Activate
With ActiveSheet
.Select
TV = .PageSetup.PaperSize
End With
MsgBox "用紙設定 定数値は 「 " & TV & " 」 です。", vbOKOnly, "メッセージ"
End Sub
エクセルシートで、「ファイル」タブ→印刷 印刷設定ウインドウで用紙設定を登録した用紙名(ユーサー定義した用紙)にセットします。
印刷は実行せずにエクセルシートに戻り、
次に、Moduleにコピペしたコード(印刷設定用紙定数値プロシージャー)を実行します。
すると、例えば、メッセージボックスに
のように表示されます。
(この場合の「70」はある特定の個別環境でのA6用紙のVBA用紙設定の定数値です。)
それぞれで、メッセージボックスに表示された「定数値」を
Worksheetオブジェクト.PageSetup.PaperSize = 定数値
としてVBAコードに設置することで設定完了です。
「定数値」はそれぞれの用紙サイズごとに1つずつ設定されていますので、ユーザー定義用紙サイズの登録を増やすごとに一回ずつ確認してください。
また、プリンターが違えば定数値も変わりますし、登録の順番も違えば定数値も変わると思ってください。
ユーザー定義用紙のVBAコードへの登録 問題解決のまとめ
このブログではA6用紙を頻繁に使う内容での記事が少なからずあります。
A6用紙への印刷をVBAでやらせる場合は、このように「定数値を導き出して」コードに埋め込む必要が出てきます。
に対して、
プリントプレビューまでで、VBAプログラムを終了し、印刷についてはエクセルのプレビュー画面から行うようにすれば、VBAとは関係が無くなります。
その場合はプリンター側でユーザー定義用紙を選択すればいいだけになります。
- VBAコード実行でシームレスに印刷
- VBAコードではPrintPreviewまで、確認をしてから印刷
どちらのスタイルが業務的に利用者に合っているかは別レベルの問題として考える必要があるかもしれません。
エクセルVBAの独習には動画学習という方法もあります。 目と耳両方を使って学習することでさらに勉強効率を上げることもできます。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
今回の記事はここまでです。 最後までご覧いただき有難うございました。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。