ご無沙汰をしております、ぼんやりジジィです。お元気でいらっしゃいますか?
嘱託の身でありながら忙しく働かせていただいており、ブログの存在もすっかり忘れておりました。
会社での仕事の効率化ということで、手書きで行っていた伝票類をエクセルを使用して機械的に発行・管理しましょうということを行っていたのですが、そこで発生したのが
エクセルの困った仕様。プリンター設定が変更されてしまう!
という問題です。環境としては複数台のプリンター設定がある方が主に対象となりますが、プリンター1台のみでお使いにならている方にも関係します。(機械的なプリンターではなくファイル上でのPDF発行でもこの問題は発生するからです)。
今日は備忘録を兼ねておりますので、手短かに書かせて頂きます。
同じ種類のOffice製品(特にエクセル)を複数同時に開くと、最初のファイルに設定していたプリンター名が、後から開いていたプリンター名で書き換えられてしまう。
今、Aという名前のエクセルで作業をしていました。これはEPSONのプリンターで印刷しながら作業をしていました。
そこに資料を探すのにBという名前の同じエクセルを同時に開いて、CANONのプリンターで印刷をしました。
そして開いたままの最初のAエクセルに戻って作業を続け、いざ印刷すると本来EPSONで印刷しなければならないのに、意図せずCANONのプリンターで印刷されてしまう(設定していたプリンター名が書き換えられてしまう)というものです。
この現象が起きる最大の要因は同じ種類(エクセルやワード)のアプリを同時に開いた場合に発生します。尚、後から開いたBファイルは開いていても閉じていても関係なく、このプリンター設定書き換え問題は発生します。
特に今回、弊社が発行する伝票類はパンチ穴・ミシン目付の専用用紙ですので、本来のプリンター設定が意図せず変わってしまうことは絶対NGなのです。
当初は変更されると困るこの特定ファイルの時だけ、エクセルVBAでプリンター指定をすれば問題ないと軽く考えていたのですが、弊社の場合増設した”用紙カセット2”を指定しなければならず、自分の知識ではこのカセット2の指定が突破出来ず、EPSONさんに問い合わせをしているのですが、とりあえずプリンター変更監視コードを忍び込ませることで、プリンターが変わったことを知り、元に戻すことで皆が幸せになれましたので、下にコード書いておきます。(細かい部分は環境に合わせて変更してください)
尚、このコードに対する責任は一切取れませんので、以降の現象は自己責任でと、一応謳っておきます。
【エクセルVBA】
Dim originalPrinterSetting As String
Dim isFirstActivation As Boolean
Private Sub Workbook_Open()
' ワークブックが開かれた時点でのプリンタ設定を保存
originalPrinterSetting = Application.ActivePrinter
' 初回のアクティベーションを示すフラグを設定
isFirstActivation = True
End Sub
Private Sub Workbook_Activate()
' 初回のアクティベーションの場合、メッセージボックスを表示せずフラグをリセット
If isFirstActivation Then
isFirstActivation = False
Exit Sub
End If
' ワークブックがアクティブになったときに、プリンタ設定が変更されているかチェック
If Application.ActivePrinter <> originalPrinterSetting Then
MsgBox "プリンターの設定が変更されました!!" & vbNewLine & "印刷ダイアログボックスが開きますので設定確認してください" & vbNewLine & " プリンター名:EPSON LP-S3000" & vbNewLine & " 給紙装置:用紙カセット2です。" & vbNewLine & "" & vbNewLine & "設定確認後は【閉じる】もしくは【キャンセル】ボタンをクリックして下さい。" & vbNewLine & "【OK】を選択すると印刷が実行され画面がクリアされます!", vbExclamation
' メッセージボックスがOKで閉じられた後、印刷ダイアログボックスを表示
Application.Dialogs(xlDialogPrint).Show
' 必要に応じてプリンタ設定を元に戻す
' Application.ActivePrinter = originalPrinterSetting
End If
End Sub
【エクセルVBA苦手な方への手順】
1.プリンター変更監視をさせたいエクセルファイルを開く
2.Altキーを押しながらF11キーを押してVBA画面を表示させる
3.左側ペインの該当するファイルの「ThisWorbook」上で右クリック
4.挿入➡標準モジュール選択
5.右側に空白なウィンドウが表示されますので、上記コードをコピペ
6.VBA画面閉じたら終了、動作確認してください。
これで、いくらかでもお役に立てれば幸いでございます。
6/19月曜に3回目の加齢黄斑変性の硝子体注射してきました、上記の作業などもあり、眼を酷使していて、状態に関しては一進せず一退で、来月少し強めの薬の注射を試みることになりました。皆様眼はお大事に!
今日も良い1日になりますように!