すぐに役立つエクセルVBAマクロ集 すぐマク
すぐに役立つ Excel VBA マクロ集 Excel VBA Macro
FAQ
Google
 
Home |  What's New! |  Gallery |  Introduction |  Service |  Profile 500連発・組み方講座フォロー Big Color Pallet
[広告]
Excel VBA Macro
Excel DownLoad
© 1997 - 2007
永井善王.
All RightsReserved.
HappyTech & Co., Ltd.
www.happy500z.com
Excel VBA Macro ・ オプションボタン・コントロール ・ FAQ
ユーザーフォームのオプションボタンで選択するには?
( アクティブ プリンタを選択して設定するには? )?
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メソッドは失敗しました」のエラーが出るが
Click here to visit our sponsor