最大35,000円進呈!IPoEはOCN光

表題のとおりなんですけと、エクセルのVBAでの印刷命令はできますが、複数あるプリンタから特定のプリンタを指定したいのですが、なにかいい方法ありませんか?

このQ&Aに関連する最新のQ&A

A 回答 (2件)

印刷のポートがLPT1:(プリンタポート)ならば



例:プリンタ名 自分のプリンタ
Application.ActivePrinter = "自分のプリンタ on LPT1:" 'プリンタの指定
ActiveWindow.SelectedSheets.PrintOut '印刷

印刷ポートがLAN内のプリンタサーバーの場合

例1:プリンタ名 事務室プリンタ
Application.ActivePrinter = "事務室プリンタ on Ne01:"
ActiveWindow.SelectedSheets.PrintOut

例2:プリンタ名 会議室プリンタ
Application.ActivePrinter = "会議室プリンタ on Ne02:"
ActiveWindow.SelectedSheets.PrintOut

Ne01 Ne02はLANにより異なります。
    • good
    • 3

ActiveSheet.PrintOut ActivePrinter:="Canon XXXX"


 とか?
    • good
    • 12

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルのマクロでプリンタを指定したいのですが

エクセルのマクロで共有のネットワークプリンタを指定しているのですが

Application.ActivePrinter = "*********** on Ne**:"

Ne**の部分がパソコンを再起動すると変更されてしまうようでうまくいきません。~on Ne**:の記述なしでプリンタを指定する方法はないでしょうか?

Aベストアンサー

こんにちは。
PrintOutメソッドの引数のActivePrinterはポート番号がなくても指定できますので、
印刷時に指定するようにしてはどうでしょうか。
(例)
Sheets(1).PrintOut Preview:=True, ActivePrinter:="EPSON LP-XXXX"

Qエクセルマクロ印刷時にプリンタを指定できますか?

エクセル2002を使用しています。VBAはまったくわかりません。
マクロの自動登録で印刷を記録すると、通常使うプリンタから
出力されるようですが、LANでプリンタ複数使用可能な環境です
ので、いちいち通常使うプリンタを変更するのではなく、マクロ
実行時にプリンタを選択したく思います。
 因みに、以下のマクロはSheet1に値を入力し、Sheet1の値をコピー
したSheet2を印刷するというマクロです。このマクロのどの部分に
コードを付け加えればプリンタをこのマクロ実行時に選択可能でしょうか?
もしくはマクロではプリンタを選択できないのでしょうか?
どうぞよろしくお願いいたします。

******************************************************************
Sub 印刷()
Sheets("Sheet2").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Sheets("Sheet1").Select
End Sub
*******************************************************************

エクセル2002を使用しています。VBAはまったくわかりません。
マクロの自動登録で印刷を記録すると、通常使うプリンタから
出力されるようですが、LANでプリンタ複数使用可能な環境です
ので、いちいち通常使うプリンタを変更するのではなく、マクロ
実行時にプリンタを選択したく思います。
 因みに、以下のマクロはSheet1に値を入力し、Sheet1の値をコピー
したSheet2を印刷するというマクロです。このマクロのどの部分に
コードを付け加えればプリンタをこのマクロ実行時に選択可能でしょうか?
...続きを読む

Aベストアンサー

#4です。

WinAPIを使ってプリンタ一覧を取得。
VBAでActivePrinterを取得。
ユーザーの指示によりActivePrinterを設定。
印刷処理。
ActivePrinterを元に戻す。

ってことをやるには相当の技術力が必要になります。
ここはひとつ、
Application.Dialogs(xlDialogPrint).Show
こうして印刷ダイアログを表示するだけにとどめておいてはどうでしょうか。
あとはユーザーが好きなプリンタを選択して[OK]を押せば印刷されます。

QEXCEL マクロに於ける プリンタ番号検索方法

使用しているデータベースのマクロの中で、

Application.ActivePrinter = "●●●●● on Ne○○○:

このような表記があります


これらの ● と ○ には、どのような値が入るのでしょう?

多分、●側は登録したプリンター名を記入し、
○側は登録された割り当ての番号だと思うのですが、
○側の番号は、どこを見たら分かるのか教えてください

よろしくお願いします

Aベストアンサー

●はプリンタ名なので,ネットワークプリンタであれば通常は各パソコンで共通です。
○は各パソコンごとに,そのパソコン固有の番号になります。

問題の回避策は幾つかありますが

sub macro1()
dim s as string
s = application.activeprinter

worksheets("シート名").printout activeprinter:="●●●●"  'on以下不要
application.activeprinter = s
end sub

などのようにするのが一番手っ取り早いと思います。



#何らかの理由でどうしても印刷前に設定を済ませておきたい時は,たとえば下記の過去ログなどご参考に。
http://oshiete.goo.ne.jp/qa/1541934.html

QEXCELネットワークプリンタでのポート名について

お世話になります。

私は社内でWin98SE、EXCEL97を使用して色々作成し
社内の方々の各パソコンに送って、使用してもらっています。

しかしサーバー上に接続されている通常使うプリンタでないネットワークプリンタの印刷で問題がでました。
私の環境と同じWin98、Excel97だと問題ないのですが、
社内の方でXP、EXCEL2000の環境の方々が結構います。
その環境ですと、エラーが出てしまいます。


ActivePrinter = "ネットワークプリンタ名 on NExx:"
と言ってXP、EXCEL2000の環境では、on NExx:のポートを
記述しないとエラーが出てしまいます。
(Win98、Excel97では on NeXXの記述は不要です)
※上記のネットワークプリンタ名はExcelで入力します。

このポートを取得するには、どのような方法があるのでしょうか?

また、簡単にWin98、Excel97の時のように、Nexx等を
設定しない方法をご存知の方よろしくお願い致します。

よろしくお願い致します。

お世話になります。

私は社内でWin98SE、EXCEL97を使用して色々作成し
社内の方々の各パソコンに送って、使用してもらっています。

しかしサーバー上に接続されている通常使うプリンタでないネットワークプリンタの印刷で問題がでました。
私の環境と同じWin98、Excel97だと問題ないのですが、
社内の方でXP、EXCEL2000の環境の方々が結構います。
その環境ですと、エラーが出てしまいます。


ActivePrinter = "ネットワークプリンタ名 on NExx:"
と言ってXP、EXCEL2000の環境では、on NExx:のポ...続きを読む

Aベストアンサー

こんには。以下は、Windows Script で通常使うプリンタを変更し、
プリントプレビューして、VBA で元のプリンタに戻してます。
Win2000 Excel2000 で動作確認しました。

Dim sActivePrinter As String

With Application
sActivePrinter = .ActivePrinter
MsgBox sActivePrinter

With CreateObject("WScript.Network")
.SetDefaultPrinter "変更するプリンタ名"
End With

ActiveWindow.SelectedSheets.PrintPreview
.ActivePrinter = sActivePrinter
End With

"変更するプリンタ名" には "‥ on NExx" は必要ありません。

注意点は変更直後、エクセルは通常使うプリンタをロストします。
しかし、プリントプレビューは成功します。(^_^;

なぜロストするか謎ですが、プレビュー後に元に戻しているので問題ない、はず。

こんには。以下は、Windows Script で通常使うプリンタを変更し、
プリントプレビューして、VBA で元のプリンタに戻してます。
Win2000 Excel2000 で動作確認しました。

Dim sActivePrinter As String

With Application
sActivePrinter = .ActivePrinter
MsgBox sActivePrinter

With CreateObject("WScript.Network")
.SetDefaultPrinter "変更するプリンタ名"
End With

ActiveWindow.SelectedSheets.PrintPreview
.ActivePrinter = sActivePrinter
...続きを読む

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QExcel・VBAでのプリンタ指定

パソコンに複数のプリンタが登録してあるのですが、
シート上にプリンタ(1)、プリンタ(2)というボタンを作っておき、
ボタンを押すだけでその指定されたプリンタから印刷するという
指定はできるんでしょうか?
できるとしたら、どのようにVBAで記述すればいいんでしょうか?
ちなみにネットワーク上のプリンタや、パソコンにローカル接続されて
そのパソコン経由で出しているプリンタもあります。
よろしくお願いします。

Aベストアンサー

一度、マクロの記録で試してみると良いと思います
Application.ActivePrinter = "EPSON VP-930 ESC/P on LPT1:"
こんな感じが作成されます。
以下は、マクロの記録で
印刷プレビュー、プリンターの切替
印刷
印刷プレビュー、通常のプリンターへ切替
を記録したものです。
Application.ActivePrinter = "EPSON VP-930 ESC/P on LPT1:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
"EPSON VP-930 ESC/P on LPT1:", Collate:=True
Application.ActivePrinter = "SHARP UX-MF25/50/60 Series (LAN) on Ne01:"

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

QエクセルVBAで手差しトレイを指定させたい。

エクセル2010です。
だいぶ端折ってますが、以下のようなコードでDATAシートのデータをInput用シートに転記し、それを参照しているPrint用シートを連続して印刷したいのです。
その歳、印字する用紙はA4等の定形サイズではない特殊な台紙なので、プリンターで「手差し」トレイに入れます。
自分の端末だとプリンターは決まっているので指定できると思うのですが、このエクセルを使う人が特定できず、どのようなプリンターなのかわかりません。(少なくとも手差しトレイはあります)
そのためPrint実行前にユーザーにトレイを選択してもらうにはどのようなコードを書き加えればよいでしょうか?ご教示いただければ幸いです。

Sub test01()
Dim ws(2) As Worksheet
Dim i As Long, x As Long
Set ws(0) = Sheets("DATA")
Set ws(1) = Sheets("Input用")
Set ws(2) = Sheets("Print用")
x = ws(0).Cells(Rows.Count, "A").End(xlUp).Row
For i = 1 To x - 1
ws(1).Range("A1:N1").Value = ws(0).Range("A1:N1").Offset(i).Value
ws(2).PrintOut
Next
End Sub

エクセル2010です。
だいぶ端折ってますが、以下のようなコードでDATAシートのデータをInput用シートに転記し、それを参照しているPrint用シートを連続して印刷したいのです。
その歳、印字する用紙はA4等の定形サイズではない特殊な台紙なので、プリンターで「手差し」トレイに入れます。
自分の端末だとプリンターは決まっているので指定できると思うのですが、このエクセルを使う人が特定できず、どのようなプリンターなのかわかりません。(少なくとも手差しトレイはあります)
そのためPrint実行前にユーザー...続きを読む

Aベストアンサー

こんにちは。

「プリンターの設定」ダイアログを使うのはどうでしょうか?

Application.Dialogs(xlDialogPrinterSetup).Show
これで使えます。

Q別のシートから値を取得するとき

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

Qエクセル VBA ユーザーフォームを閉じる

ユーザーフォームを開く時は
UserForm1.Showですが
閉じる時は?
UserForm1.Close
だとコンパイルエラーになります。
End
にするしかないですか?

Aベストアンサー

Unload Me とか Unload UserForm1 でユーザーフォームを閉じることができます。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング