[[20100308165241]] 『マクロで印刷先指定』(MMM) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロで印刷先指定』(MMM)

マクロで印刷先のプリンタを選択していても
うまくそのプリンタに出力できません。
そこまでの設定は無理なのでしょうか?
よろしくお願いいたします。


 コード見てないのでなんとも言えませんが
http://nofx2.txt-nifty.com/it/2009/04/vba-dbae.html

 ↑見る限り可能ですね。
 私もマクロの記録で試してみましたができました。
 別パソコンでできるかどうかは試していません。

 (通りすがり)

回答ありがとうございます。
ですが、会社PCのセキュリティが厳しくてブログ等のサイトは
ブロックされて残念ながら見れません。。。
自宅に戻ってから見てみますね。

(MMM)


 記録されたマクロ提示されてはいかがでしょう?
 ポート番号など見られて困るようであれば都度適当な値に置き換えればよろしいかと思います。
 (通りすがり)

Sub Macro1()
'
' Macro1 Macro
'

'

    Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5")).Select
    Sheets("Sheet1").Activate
    Application.ActivePrinter = "DocuWorks Printer on Ne03:"
    ExecuteExcel4Macro _
        "PRINT(1,,,1,,,,,,,,2,""DocuWorks Printer on Ne03:"",,,,FALSE)"
End Sub

このようになっています。
誰がファイルを開いてもDocuWorks Printer に印刷されるようにしたいのですが
通常使うプリンターのほうに印刷されてしまう人もいるんです。
ご教授ください。

(MMM)


 お伺いしてみるのですが。。。

 これは、同じPCでの事でしょうか?
 それとも、違うPCでの事でしょうか?

 ファイルもPCも同じなのに、使う人によって上手く行く人と行かない人がいる。
 ファイルは一緒だが、違うPCの場合、上手く行くPCと行かないPCがある。

 (HANA)

 コメントありがとうございます。
 違うPCです。

[[20070302100911]] 『プリンター指定印刷』(ただの鬼)

 この方のを参考にしていて気付きましたが、ここが問題のようです。

 "DocuWorks Printer on Ne03:"
 の『Ne03』にも『Ne02』にも印刷できるようにできないでしょうか?
 "DocuWorks Printer"含む(アスタリスク)も使えないんですねぇ。
 なんらかの入力をすればできる気がするのですがわかりません。。。
 よろしくお願いいたします。

(MMM)


 こんな感じで。。。?
[[20090210105145]] 『リモートプリントのマクロ』(バディ)

 上手く行くと良いですが。。。

 (HANA)


 私も同じようなことで悩んだことがあります。
 下記が参考になるかもです。
 
[[20070911131837]] 『ネットワークプリンタ』(純丸)
 
(純丸)(o^-')b

 HANAさん、純丸さん、ありがとうございます。
 ですが、知識不足のため応用できませんでしたf^_^;
 ちなみにセキュリティ厳しくてHPやブログはブロックされてあまり見れません。
 例文お願いできないでしょうか?
 よろしくお願いします。

 (MMM)


 う〜ん、試せないので試してみて貰いたいのですが。。。
 ↓じゃ駄目?
 '------
Sub プリンタ切換()
Dim pn As String
    pn = Application.ActivePrinter
    ActiveSheet.PrintOut , ActivePrinter:="DocuWorks Printer"
    Application.ActivePrinter = pn
End Sub
 '------

 (HANA)


 できましたー!!
 でも…全シート選択していたのが外れてしまうんですけど
 なぜでしょうか???
 たびたびすみません。。。

(MMM)


 アーアクティブシートじゃないとポート指定しなくちゃいけないとか書いてありましたねぇ…。
 一個ずつアクティブにして印刷する必要があるかもです。
 sub プリンタ切換()
 dim pn as string
 pn = application.activeprinter
 for each sh in worksheet
     sh.activate
     activesheet.printout ,activeprinter:="DocuWorks Printer"
     application.activeprinter = pn
 next
 end sub

 でいいのかな・・・

 (通りすがり)

 うー。。。 

 実行時エラー'13':
 型が一致しません。

 というエラーが出てしまいました。。。
 一個ずつアクティブにしてマクロを組んだらいいということですか?

(MMM)


 sub プリンタ切換()
 dim pn as string
 pn = application.activeprinter
 for each sh in worksheets
     sh.activate
     activesheet.printout ,activeprinter:="DocuWorks Printer"
     application.activeprinter = pn
 next
 end sub

 あ sつけ忘れてた
 今度はどうでしょう??

 (通りすがり)

 1枚目だけアクティブにすればよくないですか?
 通りすがりさんのコードをお借りして、

 Sub プリンタ切換()
    Dim pn As String
    Dim sh As Worksheet
    Dim flg As Integer
    pn = Application.ActivePrinter
    flg = 1
    For Each sh In Worksheets
       If flg = 1 Then
          sh.Activate
          ActiveSheet.PrintOut ActivePrinter:="DocuWorks Printer"
          flg = 0
       Else
       sh.PrintOut
       End If
    Next
    Application.ActivePrinter = pn
 End Sub
 
(純丸)(o^-')b


 ありがとうございます!でました!!
 ちなみに、プレビュー画面で止めることはできないでしょうか?
 次から次にすみません。。。

(MMM)


 >全シート選択していたのが外れてしまうんですけど
 >なぜでしょうか???
 えっと。。。。
 ActiveSheet.PrintOut , ActivePrinter:="DocuWorks Printer"
 ~~~~~~~~~~~ アクティブシートをプリントアウト
 って成っているからでしょうね。

 タブン
 ActiveWindow.SelectedSheets.PrintOut , ActivePrinter:="DocuWorks Printer"
 選択シートを~~~~~~~~~~~~~~~~プリントアウト
 にすれば、選択解除はされないんじゃないかと思いますが

 選択しなくても動きそうですか?
 '------
Sub プレビューも()
Dim pn As String, prs As Object
Set prs = Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5"))
    pn = Application.ActivePrinter
        prs.PrintOut Preview:=True, ActivePrinter:="DocuWorks Printer"
    Application.ActivePrinter = pn
Set prs = Nothing
End Sub
 '------

 ちなみに、ブック全体(全部のシート)を印刷すれば良いなら
        ActiveWorkbook.PrintOut 〜
 で良いかなぁ。。。
 一寸やってみてください。

 (HANA)

 ご教授ありがとうございます。レス遅くてすみません。。。

 ActiveWorkbook.PrintOut
 はどこに置き換えれるんですか?

 ちなみ新たな要求が…
 プレビュー画面で止まって
 プリンター"DocuWorks Printer"か"Printer S"か選択して印刷はできないでしょうか?

 皆さんからのご教授の結果、今こうなってます。

 Sub Macro3()
 '
 ' Macro3 Macro
 '

 '
    Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5")).Select
   Sheets("Sheet1").Activate
 'デフォルトのブリンターを取得
   defo_printer = CreateObject("Excel.Application").ActivePrinter
 '印刷プレビュー
   Dim pn As String, prs As Object
   Set prs = Sheets(Array("Sheet1", "Sheet2", "Sheet3", "Sheet4", "Sheet5"))
    pn = Application.ActivePrinter
        prs.PrintOut Preview:=True, ActivePrinter:="DocuWorks Printer"
    Application.ActivePrinter = pn
 'プリンターをデフォルトに戻す
   Application.ActivePrinter = defo_printer
 'シートの選択を解除
   Sheets("Sheet1").Select
 End Sub

 お願いします。
(MMM)


 失礼ですが、私が載せたコードの意味の理解に
 勤めてい頂いていますか?

 また、私が書いている事を理解しようと
 努力して頂けていますか?

 >>ActiveSheet.PrintOut , ActivePrinter:="DocuWorks Printer"
 >>~~~~~~~~~~~ アクティブシートをプリントアウト

 >>ActiveWindow.SelectedSheets.PrintOut , ActivePrinter:="DocuWorks Printer"
 >>選択シートを~~~~~~~~~~~~~~~~プリントアウト

 と書いた後に
 >>ちなみに、ブック全体(全部のシート)を印刷すれば良いなら
 >>       ActiveWorkbook.PrintOut 〜
 >>で良いかなぁ。。。

 と書いているのに、
 >ActiveWorkbook.PrintOut
 >はどこに置き換えれるんですか?
 と言う御質問は「本当に読んでもらえてるのかな?」と思います。

 また、
 >'デフォルトのブリンターを取得
 >  defo_printer = CreateObject("Excel.Application").ActivePrinter
 変数 = ・・・.ActivePrinter と言う記述で
 デフォルトのプリンタを取得すると分かっている(書いてある?)のにその下に
 >pn = Application.ActivePrinter
 が残してあるのも「ちゃんと見てるのかな?」と思ってしまいます。

 それぞれ何処が違うのか、見比べてもらっていますか? 

 それに最後に載せたコードは
 ・選択しなくても動きそうですか?
   →以下の様に書けば .Select が不要
 ・プレビューも
   →以下の様に書けば プレビューされる
 と言うつもりのコードですが
 >皆さんからのご教授の結果、今こうなってます。
 のコードにしないと目的の事が出来ませんか?

 当初のコードは Sheet1〜Sheet5 を印刷するコードだったと思いますが
 実際はブック全体が印刷出来れば良いのですか?
 それとも、今回のコードとは別に、ブック全体を印刷するコードも
 知っておきたいと言う事での質問でしょうか?

 いずれにしても、これに関しては マクロの記録を試して見て下さい。
 印刷設定の中に ブック全体が印刷出来る設定が有ります。
 また、その時にプリンタを切り替える。印刷プレビューもしてみる。
 と、今回のコードの作成に非常に有用なコードが得られると思います。

 それから
 >プリンター"DocuWorks Printer"か"Printer S"か選択して印刷
 に関しては、どう言った理由でその様な事が必要なのでしょう?
 例えば、
  ・片方のプリンタにしか出力出来ないPCがある
  ・使用者に近いプリンタから印刷出来ると便利
  ・その時の気分(他の人が使っていない方とか)で使用プリンタをその都度決めたい
 等。。。?

 (HANA) 


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.