ユーザーフォームのオプションボタンで選択するには?

( アクティブ プリンターを選択して設定するには? )
Question 21.4 Previous Next
Excel97のマクロの記述内容について質問します。

Excel起動画面のファイルメニュウから印刷をクリックしますと、「印刷」ダイアロボックスが表示し、そこでプリンターの機種等を設定し、OKで印刷の実行がされます。
そこまでの操作を、マクロで実行させたいと思います。ただし,印刷は別メニュウで実行させるので、ここではプリンターの機種設定のみで、OKとさせたいです。

自分で組んだマクロは、下記のとおりで、メニュウのボタン(下図参照)を押すと実行されます。よろしくお願いします。
'------------------------------------------------------------------------------
 選択範囲が変更されたときに実行するマクロ
'------------------------------------------------------------------------------
Sub プリンター()
10  Worksheets("操作").Activate
20  MsgBox "現在使用プリンター名: " & Application.ActivePrinter
30  p = MsgBox("プリンターを変更しますか?", vbYesNo + vbQuestion, "変更確認")
40  If p = vbYes Then
50 '    Application.ActivePrinter = printer
52      ActiveSheet.PrintPreview        '50行のコードがうまく動かないので代りのコード
60  End If
70  Range("a1").Select
End Sub
'------------------------------------------------------------------------------
Answer  (Macintosh非対応) Copyright (C) 1999.9.24 永井善王
あなたが組まれた「プリンター設定」のマクロを、私のパソコンで実行してみました。下図のメッセージボックスが表示されました。
   現在のプリンター
「Canon BJ F200 on LPT1:」と映っています。この値は、マクロの20行にある ActivePrinterプロパティで得られた値です。このプロパティは、現在使用しているプリンターの名前の取得、および、
設定が可能です。そして、プリンター名は文字列です。よって、50行にある変数「printer」に、別のプリンターの名前をセットしてから、50行のマクロを実行すれば、設定できるはずです。

例えば下記の48行のようなコードを入れます。
48      printer = "Canon BJC-455J on LPT1:"
50      Application.ActivePrinter = printer
あなたは、Excel 97を使ってみえるので、現時点の回答としては、以上のとおりで良いと思いますが、 Excel 2000では「プリンターの名前」の表現方法が変っています。
97では「 on LPT1:」と末尾に書かれている部分が、2000では先頭になり、かつ、「LPT1: の 」と日本語風に変ったようです。
いずれ、あなたのパソコンが、Excel 2000にバージョンアップされた時には、マクロの修正が必要になります。
あるいは、職場内で Excel 97と 2000が混在することになった場合には、マクロの書き方に工夫が必要になります。
Excel 2000の場合、上記の48行目は下記のように書きます。
48      printer = "LPT1: の Canon BJC-455J"
パソコンにインストールされているExcelのバージョンは、マクロの中で判別することが可能ですから、どちらのバージョンにも対応したマクロにすることが可能です。バージョン判別について、くわしく知りたければ こちら で見れます。
また、
Service etc. のページでご紹介している書籍 「Excel VBA マクロ 500連発」にも掲載されています。
あなたも追って工夫されることと思いますが、以下は参考までに書いておきます。
プリンターの選択には、ユーザーフォームを使うと面白いかも知れませんね。

 1. はじめに、現在のプリンターを知らせておく     2. ユーザーフォームでプリンターを選択する
変更するか  プリンター選択

もし、あなたが Internet Explorer 4.0以上と、Excel 97 または 2000がインストールされたパソコンで、このHPを見ているのでしたら、ここをクリック すればエクセルが起動して、サンプルブックが開きます。
サンプルブックが開いたら、[ファイル]-[名前を付けて保存]して、[ファイル]-[閉じる]で一旦終了します。


後で改めてExcel を起動し、ダウンロードしたブックを開いて、ボタンをクリックすれば、ユーザーフォームと、Excelのバージョンの判別も見られますし、マクロを動かして確認できます。  サンプルブックは「ActivePrinter 」プロパティを使っているので、
Internet Explorerから直接開いて実行すると、正しく動作しないようです。  ただし、下記の注意事項を守ってください。

【注意事項】
プリンターが関係するマクロは、パソコンに、そのプリンターが正しくインストールされていない状態で実行すると、エラーが出ることがあります。
実行時エラー
左図は、プリンターがまったく組み込まれていないパソコンで出たエラーです。
失敗エラー
左図は、プリンターの名前が正しくない場合に出たエラーです。
既定値プリンター
左図は、プリンターがまったく組み込まれていない場合のメッセージボックスです。
よって、イベントマクロに書かれているプリンターの名前を、実際に動作させるパソコンにインストールされているプリンターの名前に、書き変える必要があるかも知れません。
【参考ページ】  
「ActivePrinterメソッドは失敗しました」のエラーが出るが

Excel VBA Macro