電子書籍の厳選無料作品が豊富!

VBAで、Aシート(B5用紙)をCプリンタで、Bシート(A6用紙)をDプリンタで印刷するコードを前回教えて頂いたので、試行してみましたが、エラーがでてしまいました。どこが間違っているか教えて下さい。お願いします。作成したコードは次のとおりです。同じコードがVBAProject(PERSOVNAL(回復済み).xlsb)のModule 1に作成されました。このため、印刷すると、勝手にPCが連続印刷になり、止まらなくなります。
Private Sub 印刷2()
Dim Sh11 As Worksheet
Set Sh11 = Worksheet("振替伝票")
Dim orgPrinter As String
orgPrinter = Application.ActivePrinter
Debug.Print "印刷前 :" & Application.ActivePrinter
Call Sh11.PrintOut(ActivePrinter:="Canon TR9530 series (1 コピー)")
Debug.Print "印刷直後 :" & Application.Printer
Application.ActivePrinter = orgPrinter
Debug.Print "戻したよ: " & Application.ActivePrinter
End Sub

見にくいかと思いますが、画像を添付します。

「VBA、AシートとBシートを別々のプリン」の質問画像

質問者からの補足コメント

  • 説明不足ですみません。 
    帳票の様式(大きさ)が異なるため、1枚はAシートでCプリンタで、もう1枚はBシートでDプリンタで印刷できるよう別々に指定にしたいと思っています。すでに、AシートでCプリンタでの印刷コードは作動しています。
    PCはCプリンタを通常使うプリンタのCプリンタになっており、BシートをDプリンタで印刷とすると 設定がDプリンタに変わってしまいます。それぞれのシートに「印刷」ボタンを作成し作動させています。プリンタの指定変わらないようにしたいのが希望です。
    印刷2のマクロのコードは、「PERSONAL.XLSB!印刷2」で、Aシートの振替伝票をCプリンタで出力します。
    ① VBAProject (PERSONAL.XLSB)のモジュールのコードは、

    以下、追加補足します。

      補足日時:2021/11/27 12:16
  • 続きです。
     Sub 印刷2() 
      ' 印刷2 Macro  
      Application.Run "PERSONAL.XLSB!印刷2" 
     End Sub 
    ② VBAProject (PERSONAL(回復済み).xlbのモジュールのコードは、
     Private Sub 印刷2()
     Dim Sh11 As Worksheet
     Set Sh11 = Worksheets("振替伝票")
     Dim orgPrinter As String
     orgPrinter = Application.ActivePrinter
     ebug.Print "印刷前 :" & Application.ActivePrinter
     以下、続きます。

      補足日時:2021/11/27 12:18
  • 続きです。

    Call Sh11.PrintOut(ActivePrinter:="Canon TR9530 series (1 コピー)")
     Debug.Print "印刷直後 :" & Application.Printer
     Application.ActivePrinter = orgPrinter
     Debug.Print "戻したよ: " & Application.ActivePrinter
     End Sub

      補足日時:2021/11/27 12:19
  • こんばんは。いろいろ試行していたら、ディバックが表示されるので、コードをもう一度チェツクしたところ、Activeが欠落していました。一応解決しました。有難うございました。

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/11/27 19:09

A 回答 (1件)

こんにちは



エラーの原因は、コピペミス(?)。
>Set Sh11 = Worksheet("振替伝票")
の「s」が抜けています。
 Set Sh11 = Worksheets("振替伝票")
ただし、シート名が正しいのかどうかまでは、こちらではわかりかねます。

ご提示のコードは、プリンタを指定してシートを印刷出力するものですが、ご質問文にあるように2枚のシートをプリンタを変えて印刷するものではありません。
また、シート名と同様に、プリンタ名が正しいのかどうかは、こちらではわかりません。
両方とも質問者様の環境に依存する内容ですから、ご自身で適切に指定してください。

>このため、印刷すると、勝手にPCが連続印刷になり、止まらなくなります。
パーソナルブックにコードがあっても、止まらなくなることはないと思いますけれど、不要であるならば削除しておいた方が宜しいでしょう。
(どのような使い方をなさりたいかによります)
この回答への補足あり
    • good
    • 0
この回答へのお礼

有難うございます。
>Set Sh11 = Worksheet("振替伝票")の「s」が抜けています。
 訂正しました。「Set Sh11 = Worksheets("振替伝票")」
 印刷でき、連続印刷がなくりました。
>2枚のシートをプリンタを変えて印刷するものではありません。
 出来ないことはわかりました。説明不足ですみません。補足コメントでご説
 明します。
 
 パーソナルが2つになり、コードが違うのですが、どちらかに1つにできないでしょうか?コードは補足コメントに提示します。

お礼日時:2021/11/27 11:48

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