Excel VBAでプリンターを完全に制御!ActivePrinterプロパティの基礎と実践的な使い方

はじめに

皆さん、Excel VBAを使ってプリンターを制御する方法をご存知ですか?
これは、印刷物の出力を自動化したり、環境に応じて印刷設定を変更したりするのにとても便利です。

Excel VBAにはActivePrinterプロパティというものがあり、これを使うと現在のプリンターの名前を取得したり設定したりできます。

この記事では、このActivePrinterプロパティについて詳しく説明します。そして、実際のコード例を使いながら、Excel VBAでプリンター設定を自在に操る方法を紹介します。ぜひ参考にしてみてください。

ActivePrinterプロパティの基礎

ActivePrinterプロパティは、Applicationオブジェクトからアクセスできるプロパティです。このプロパティは、現在選択されているプリンターの名前を文字列型で返してくれます。例えば、「Canon MG7700 series」といった具合です。

このプロパティの値を取得するには、次のようなコードを使います。

このコードを実行すると、現在選択されているプリンターの名前が表示されます。
では、ActivePrinterプロパティの値を設定する方法も見てみましょう。

このコードを実行すると、指定したプリンターがアクティブプリンターになります。

実践的な使い方

ActivePrinterプロパティを使うと、プログラム内でプリンターを変更することができます。
いくつかの実例を見ていきましょう。

複数のプリンターを使用する場合

例えば、複数のプリンターが接続されている場合、ActivePrinterプロパティを使って適切なプリンターに出力することができます。

このコードを実行すると、現在選択されているプリンターが「Canon MG7700 series」に変更され、シートの内容が印刷されます。

プリンターの設定を変更する場合

プリンターの設定を変更することで、印刷物の品質を改善することができます。例えば、以下のようなコードを使用して、プリンターの解像度を変更することができます。

このコードを実行すると、プリンターが「Canon MG7700 series」に変更され、シートの内容が600dpiの高解像度で印刷されます。

印刷ダイアログボックスを制御する場合

印刷ダイアログボックスを制御することで、ユーザーが印刷の詳細設定を行う必要がなくなります。

このコードを実行すると、プリンターが「Canon MG7700 series」に変更され、印刷ダイアログボックスが表示されずにシートの内容が印刷されます。

エラーハンドリング

VBAでプリンターを制御する際には、エラーハンドリングも重要です。以下のコード例では、エラーハンドリングを追加して、プリンター設定時にエラーが発生した場合の対処法を示します。

環境について

このコードは、Excel 2016以降のバージョンで動作確認しています。使用するExcelのバージョンによっては、プロパティやメソッドが若干異なる場合がありますので、ご注意ください。

まとめ

ActivePrinterプロパティは、Excel VBAを使ってプリンターを制御するための非常に重要なプロパティです。
これを使うことで、プログラム内でプリンターの設定を簡単に変更し、自動化した印刷を実現できます。
この記事で紹介した実践的な使い方を覚えておくと、Excel VBAでの印刷作業がさらに効率的になります。
ぜひ、日常の業務に取り入れてみてください。

サンプルコード

アクティブなプリンターの名前を表示

まずは、現在設定されているアクティブなプリンターの名前を表示するシンプルなコードから始めましょう。

プリンターを変更して印刷

次に、アクティブなプリンターを特定のプリンターに変更してからシートを印刷するコードです。

プリンター設定を変更して印刷

特定のプリンターに変更し、解像度や他の印刷設定を変更してから印刷するコードです。

異なるプリンターに対するバッチ印刷

複数のプリンターに対して同じシートを順番に印刷するコードです。

プリンターの状態を確認してから印刷

プリンターがオンラインであるかどうかを確認してから印刷を行うコードです。このコードでは、WMI (Windows Management Instrumentation) を使用してプリンターの状態を取得します。

現在の日付と時刻でファイル名を更新してシートをPDFに変換する

次のコードを試してみてください。
現在の日付と時刻に基づいてレポート名を生成し、現在のワークシートを指定されたフォルダーにPDFファイルとして保存します。

指定した範囲をパスワード保護されたPDFとして保存する

こちらのコードも試してみましょう。
指定した範囲のシートをPDFファイルとして保存し、そのPDFファイルにパスワードを設定します。

このコードを実行すると、指定した範囲のシートがPDFファイルとして保存され、そのPDFファイルは指定されたフォルダに日付を含むファイル名で保存されます。
また、PDFファイルはパスワード保護され、パスワードを知らない限り開けなくなります。

コメント