プリンターの切り替えをエクセルマクロで
エクセルを使った資料作成作業の中で、毎回1シート・2ページ分を1ページに「集約」して印刷する作業があります。
毎回そのシートを印刷するときは、「印刷」→プリンターの「プロパティ」でいちいち設定を変更していました。
そこで今回は、エクセルのマクロにて下記の省力化に挑戦しました。
注意:ご紹介する方法、設定内容などは、当社の環境によるものです。作業環境によって異なった画面等になっている可能セがあります。ご参考までにご覧ください。
目的
集約印刷をする場合にいちいち設定を切り替えることなく、1クリックで印刷したい。
方法
- 集約印刷用プリンターを用意する。
- 集約印刷用プリンターを選択、印刷するエクセルマクロを作成する。
- マクロを「アドイン」として登録する。
- 「クイックアクセスツールバー」にマクロを割り当てたボタンを登録する。
集約印刷専用のプリンターの用意
集約印刷専用のプリンターを用意します。
もちろん、新たにプリンターを購入するわけではなく、現在使用しているプリンターのドライバをコピーし、「集約印刷専用」にします。
「スタート」→「デバイスとプリンター」をクリック
プリンターの追加をクリック
インストールするプリンターの種類の選択ここでは、ネットワークプリンターを選択しました。
利用できるプリンターが表示されますので、選択して、次へをクリック
ドライバーのモデルを検出しています。
どのバージョンのドライバーを使用しますか?「現在インストールされているドライバーを使う(推奨)(U)」をチェックして「次へ」をクリック
プリンター名を入力してください。
わかりやすいプリンター名を入力してください。
プリンター名は、後に作成するエクセルマクロで使用します。
正しく追加されました。
通常使うプリンターには、チェックを入れません。完了ボタンをクリックします。
追加されたプリンターを右クリックして、「プリンターのプロパティ」をクリック
タブ「全般」の「基本設定」をクリック
プリンターの印刷設定で、「集約」を適用
注・当然ながら、使用するプリンターによって設定可能な項目は違います。
集約印刷用プリンターを選択、印刷するエクセルマクロを作成
エクセルを起動し、新規ブックを作成
キー[Alt]+[F11]で、VBEを起動
「挿入」→「標準モジュール」をクリック
下記のコードを貼り付けます。
Sub 集約印刷()
'
' 集約印刷 Macro
'
' 変数 myPrinter を宣言
Dim myPrinter As String
' 現在のプリンターを記憶
myPrinter = Application.ActivePrinter
' 集約印刷で使用するプリンターでアクティブシートを印刷する。
' [ Preview:=True, ]でプレビューする。[ Preview:=False, ]でプレビューしない。
ActiveSheet.PrintOut Preview:=False, ActivePrinter:="RICOH IPSiO SP 6220 RPCS (集約)"
' プリンターを元に戻す
Application.ActivePrinter = myPrinter
End Sub
「保存」ボタンを押して、適当な名前を付けて保存します。
このときファイルの種類は「マクロ有効ブック(*.xlsm)」にしてください。今回は「SP6220_syuyaku.xlsm」にしました。
集約印刷マクロはできましたが、このままでは毎回このマクロを動かすためにマクロファイルを開いておかなければなりません。それでは今までの「プリンターを切り替え」ていたのと手間が変わりません。ボタンひとつで切り替えるのが目的ですからもうひと手間加えます。
マクロを「アドイン」として登録
先ほど保存した、「SP6220_syuyaku.xlsm」を開きます。
名前を付けて保存します。このときファイルの種類は「Excelアドイン(*.xlam)」にしてください。今回は「SP6220_syuyaku.xlam」にしました。
「Excelアドイン(*.xlam)」で保存すると、アドイン特定の場所に保存されます。
弊社の環境では、「C:\Users\(ユーザー名)\AppData\Roaming\Microsoft\AddIns」に保存されました。エクセルのバージョンによって、保存場所は変わるようです。
また、基のマクロ「SP6220_syuyaku.xlsm」も保存しておいてください。マクロの修正、変更が必要な時は、マクロブックで編集します。
「クイックアクセスツールバー」にマクロを割り当てたボタンを登録
エクセルを起動します。
- 左上の「officeボタン」をクリックします。
- 「Excelのオプション(I)」をクリック
- 「Excelのオプション」画面にて、「アドイン」をクリック
- 管理が「Excelアドイン」になっていることを確認して「設定」ボタンをクリック
- 「アドイン」画面にて「SP6220_syuyaku」にチェックを入れ、「OK」をクリック
- 再度「Excelのオプション」画面にて、「ユーザー設定」をクリック
- クイックアクセスツールバーをカスタマイズします。
- コマンドの選択で「マクロ」を選択
- 「集約印刷」を選択して、「追加(A)>>」をクリック
- 画面の右側のボックスに「集約印刷」が表示されたら、「OK」をクリック
- クイックアクセスバーにコマンドボタンが表示されました。
- これで集約印刷時はこのボタンをクリックするだけで、プリンターの切り替えをしてくれます。
プリンターのポート番号
印刷時にマクロの記録を使ってプリンターを切り替えると
ActivePrinter:="RICOH IPSiO SP 6220 RPCS on Ne03:"
のように記録され 「on Ne03」プリンターのポート番号が付加されますが、これは、使用するPC個々で違うようです。「on Ne03」は指定しなくても印刷されます。かえって、指定してしまうと他のPCでは印刷できませんでした。
プリンター名の取得について
マクロコードの中でプリンター名を指定するところがありますが、プリンター名を正確に指定するには、以下の方法が便利です。
- 「スタート」→「デバイスとプリンター」をクリック
- 該当のプリンターを右クリック
- プリンターのプロパティ(P)をクリック
- タブ「全般」にプリンター名が表示されていますので、ここからプリンター名をコピー(図-011)
あとがき
ちょっとしたことですが、頻繁に繰り返す作業についてはできるだけ自動化を図っていきたいと思います。
通常はモノクロプリンターを使用するけれども、たまにカラーで印刷する場合にも応用できると思います。