|
|
| Excel VBA Macro ・ オプションボタン・コントロール ・ FAQ |
ユーザーフォームのオプションボタンで選択するには?
( アクティブ プリンタを選択して設定するには? )?
|
|
|
|
Question 21.4 |
|
 |
 |
|
|
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メソッドは失敗しました」のエラーが出るが
|
|
|
|
| |
|
|