毎週やるルーティンワークが2週間ぐらい前に1つ増えた。
内容的には、修理依頼→部品発注の流れで、部品発注を忘れる担当がごく稀にいるため、それを阻止すべく依頼情報を監視しろ、的な感じである。
最初アナログチックなことを所長からは提案されたが、我輩はそこそこ冴えてるしめんどくさい事は嫌いなので、該当の状況に陥っている場合の条件を頭回して考えBIで絞り込む事にした。
そして、それを毎度印刷して何かに綴る、ということになったのだが、余白をゼロにして、倍率を75%にして、カラーにして、ということを毎回手動でやるのが嫌だと思った。だって我輩は印刷マシンじゃないしな。たったそれだけのことだが、嫌なもんは嫌なのだ。
というわけで設定〜印刷までのVBAコードを適当に作成。
あとはカラーにするだけやなという段階で、なんと躓いてしまった。※我が社のプリンタはデフォルトで白黒になっているのである。
そこで印刷時の色制御のコードを調べると、白黒にするかしないかみたいなコードしか無い事が発覚。
それがこれ↓
ActiveSheet.PageSetup.BlackAndWhite
この、マイケル・ジャクソンのごとき*1ActiveSheet.PageSetup.BlackAndWhiteをひとまずFalseにしてみる。
だが、全然駄目じゃないか!
色々調べてteratailのこのページの回答まんまでもやってみたが、全くもって無理だった。いかにも出来そうな感じだったのに。まあほとんど無理無理言ってる回答しかないように、APIだからVBAのコードでは制御できないってことらしい。
く…、悔しい…。
本当に出来ないのかよ、そんなこと無いやろ、とか思うも最終的にはめんどくなったので、結局、同プリンタのドライバーをカラー用で新たに追加する事で対策しすることにした。
もう本当にただドライバー追加するだけだが、どうしたらええのん(´;ω;`)と泣いて思考できない諸君がいたときのためにザックリ手順を載せておく。※ネットワークプリンタ前提。
①新たにカラー専用でドライバを追加したいプリンタのIPを確認する。
・コンパネ→ハードウェアとサウンド→デバイスとプリンターで該当プリンタの【プリンターのプロパティ】を開き、ポートタブを選択、チェックが入っている部分のIPを確認。
②その後デバイスとプリンターウィンドウ内の適当な余白部分で右クリックしコンテキストメニューから【プリンターの追加】を選択。
1:ネットワークプリンタを利用しているため、ネットワーク、ワイヤレスまたは~を選択→検索が始まるが、探しているプリンタは無いとし、TCP/IPアドレスまたはホスト名を使ってうんたらというところを選択し次へ
2:デバイスの種類は自動検出とし、ホスト名またはIPアドレスのところに先ほどプリンターのプロパティで確認したIPを入力し次へ
3:すると、
こんな感じのドライバー選択画面が出てくるため(見せたところで何の問題もないはずだがなんとなく黒く潰している)、該当機種(シリーズ)の正しいドライバーで使われて無いものを適当にインストール。※会社PCなのでいくつもドライバーが入ってるが、普通に個人用PCで入ってない場合はメーカーサイトからダウンロードするといい。
→後は全部次へ次へを押して完了で終了
※インストール直後のデフォルト設定は基本的にカラーと思われるが、カラー設定じゃない場合はカラー設定にする。
③その後、VBAでどのプリンタから印刷するかを指定するために、正しいプリンタ名ポート番号が必要なため、Excelの印刷設定で新たにインストールしたドライバー名のプリンタを選択。
④それから適当に、
Sub kakunin()
Debug.Print ActivePrinter
End Sub
を実行し、イミディエイトウィンドウに返ってきた値をコピー(→イミディエイトウィンドウが無い場合:Ctrl+Gで出てくる)。
あとは、
Application.ActivePrinter = "ここ"
のここ、というところにペーストしてプリンタ指定は完了。
これで無事、目的のカラー印刷に辿り着け非常に満足した、という話であった。
===========
以下は我輩が実際に使用しているコード↓
※buhibuhiは部品の意味
※プリンタ名とポート番号だけ一部意味もなく伏せている。
※DoEventsはおまじない的にツッコんでいる(以前別のVBAコードで、表面上は印刷処理されるのに実際は出力されない現象にぶちあたり、結果DoEvents入れて制御戻すことであっさり解決して以降、DoEventsに絶大な信頼を置いている)。
Sub 印刷buhibuhi()
Range("o:q").EntireColumn.Hidden = True
DoEvents
With ActiveSheet.PageSetup '余白は要らん!
.LeftMargin = 0
.RightMargin = 0
.TopMargin = 0
.BottomMargin = 0
.Orientation = xlLandscape 'xlPortraitにすると縦になる。
.Zoom = 75 '倍率は75%だ!
End With
Application.ActivePrinter = "KONICA MINOLTA CXXX Series XPS on NeXX:"
Sheets(1).Range("A2:R" & Range("R65536").End(xlUp).Row).PrintOut Copies:=1
End Sub
*1:マイケルジャクソンはBlack or Whiteだったわ。