解決済み

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

  • 困ってます
  • 質問No.9608048
  • 閲覧数100
  • ありがとう数0
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 17% (37/210)

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

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

  • 回答No.4

ベストアンサー率 62% (445/708)

Visual Basic カテゴリマスター
プリンタードライバを追加してディフォルトで両面印刷するように設定
インストールしたプリンターのアイコンを右クリックして
[印刷設定]をクリック ⇒ 両面印刷の設定
設定後、プリンター名を"両面印刷"とする
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

その他の回答 (全3件)

  • 回答No.3

ベストアンサー率 28% (4476/15938)

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

ベストアンサー率 54% (349/646)

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

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

ベストアンサー率 44% (4215/9512)

他カテゴリのカテゴリマスター
両面印刷とかの制御はVBAではできません。
両面印刷になるような設定をしたプリンタを作成して,そのプリンタで印刷するようにしてください。
.PrintOut ActivePrinter: = "両面プリンタ"
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ