こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

休暇願をVBA作成し両面印刷する方法を教えてほしい

VBAで休暇願を作成し印刷時は差し込み印刷方法でA4用紙に両面印刷したいのですが書き方が判りません。
マクロの内容を添付しますので両面印刷できるようにするにはどのように書けばよいのか教えてください。
下記のマクロで片面印刷は可能です。
Sub 印刷()
Dim LastRow As Long
Dim i As Long
Dim myNo As Long
If vbNo = MsgBox("印刷を開始していいですか?", vbYesNo) Then Exit Sub
With Worksheets("名簿マスター")
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
For i = 1 To LastRow
myNo = .Range("A" & i).Value
With Worksheets("印刷シート")
.Range("f7").Value = myNo
.PrintOut Copies:=1, Collate:=True
End With
Next i
End With
MsgBox "印刷が終わりました"
End Sub

投稿日時 - 2019-04-18 15:42:04

QNo.9608048

困ってます

質問者が選んだベストアンサー

プリンタードライバを追加してディフォルトで両面印刷するように設定
インストールしたプリンターのアイコンを右クリックして
[印刷設定]をクリック ⇒ 両面印刷の設定
設定後、プリンター名を"両面印刷"とする
Sub 印刷()
  Dim LastRow As Long
  Dim i As Long
  Dim myNo As Long
  Dim myPrinter As String
  If vbNo = MsgBox("印刷を開始していいですか?", vbYesNo) Then Exit Sub
  'アクティブプリンターを記録
  myPrinter = Application.ActivePrinter
  With Worksheets("名簿マスター")
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    For i = 1 To LastRow
      myNo = .Range("A" & i).Value
      With Worksheets("印刷シート")
        .Range("f7").Value = myNo
        '両面印刷をデフォルトで設定したプリンターで印刷
        .PrintOut ActivePrinter:="両面印刷", Copies:=1
      End With
    Next i
  End With
  'アクティブプリンタを通常のプリンタに戻す。
  Application.ActivePrinter = myPrinter
  MsgBox "印刷が終わりました"
End Sub

投稿日時 - 2019-04-20 22:38:57

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

検索して、WEBページに聞けば、すぐわかる有名な課題。
http://www.max.hi-ho.ne.jp/happy/YNxv9b8.html
>2. プリンターのオプション設定
両面印刷のようにプリンターのドライバーの機能に依存するものは、マクロを自動記録することは不可能と思います。
推測では、多分メーカーでのこの面のドライバー(機器仕様密着の)ソフトでの標準化・共通化がなされる前に、エクセルVBAなどのしよう仕様が決まって、そのままになっているのでは?
(1)常時、両面印刷になっているプリンターを決めて、アクチブプリンター
に指定するか、
(2)SendKeys法
があるが、(2)は簡易でなく、(1)は完全ではなさそうだ(それまでに、誰かが片面に変更可能)。
VBAでは諦めて、印刷するとき、直前に、自分でパソコン画面で、両面印刷の設定ができるのではないか。小生はやむなくそうしている。
また、この機能がプリンターにハード的に備わってない機種では、話にならない。
ページごとに、用紙の表に印刷して、用紙を裏返して、裏ページ内容を印刷する、とかも煩雑だ。

投稿日時 - 2019-04-18 22:02:31

ANo.2

プリンタのプロパティを設定変更して印刷したいのだと思いますが、その部分はExcelではないのでVBAで制御できません。
特定のPCで特定のプリンタなら以下の手順で最初から両面印刷に設定しておくことをお勧めします。

ページレイアウトのタブからページ設定の画面を表示します。
下のオプションをクリックして、両面印刷にして、すべてOKし、
ファイルを保存します。

投稿日時 - 2019-04-18 17:28:19

ANo.1

両面印刷とかの制御はVBAではできません。
両面印刷になるような設定をしたプリンタを作成して,そのプリンタで印刷するようにしてください。
.PrintOut ActivePrinter: = "両面プリンタ"

投稿日時 - 2019-04-18 17:01:33

あなたにオススメの質問