質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

4回答

25686閲覧

EXCEL/VBAのコードで両面印刷できない

koskos

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2019/02/09 06:57

こんにちは、みなさま
Win10+EXCEL2016でシートを印刷したく、下記のコードを書きました。

With .PageSetup
.PrintArea = "$B$4:$DC$276"
.TopMargin = Application.InchesToPoints(0.6)
.LeftMargin = Application.InchesToPoints(0.2)
.BottomMargin = Application.InchesToPoints(0)
.RightMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.Orientation = xlPortrait
.PaperSize = xlPaperA4
.Zoom = 92
End With

.Rows(40).PageBreak = xlPageBreakManual
.PrintOut

4行目から276行目までを印刷範囲として、40行目に改ページマークを挿入し、二ページ(枚)が連続して印刷されることを確認しています。

プリンタ(Canon/LBP842C)のプロパティを開き「両面印刷・長辺(左)綴じ」として、上記コードを走らせると・・・
両面印刷にならず、二枚が出てきます。

どこで勘違いしてるか、ご教示いただけれは幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

執拗に「プリンタ制御は目的ではない」というところを見るに、
この件の解決法を求めてはおらず、
なぜ一旦行ったプリンタ設定のすべてが記憶されていないのか?
という事でしょうか?
考えられる事としては、
・VBAで印刷を行う場合Excel起動時もしくは標準に設定されたプリンタ設定が使用される
・Excelかプリンタドライバに小さな問題があり両面印刷のプリンタ設定の記憶が上手く行っていない
等でしょうかね?
用紙トレイの設定等は正しく行われ、両面印刷のみが無効になるのであれば1つ目は違うかな?
簡単に解決するにはプリンタの複製を作っておいて、
作った複製のプリンタの標準設定を両面設定にしておいて、
そのプリンタで印刷するってとこでしょうかね。

投稿2019/02/11 17:47

shinobu_osaka

総合スコア456

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

両面印刷は設定が基本です。

設定する内容をマクロとして実行する例は以下
Excelで全シート一括両面2in1にする方法 [VBA]
※内容は印刷ダイアログに合わせたコードにする必要があります。

以下は複数シートに設定を適用させる方法。
複数シートに両面印刷設定をするには

投稿2019/02/09 09:34

sazi

総合スコア25206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koskos

2019/02/09 10:07

ご教示感謝です。 が、フリンタ制御が目的ではありません。 最初に提示したコードで両面印刷にならない訳が知りたいのです
guest

0

https://answers.microsoft.com/ja-jp/msoffice/forum/all/%E3%83%9E%E3%82%AF%E3%83%AD%E3%82%92%E4%BD%BF/794c0634-4a5a-4b08-8d21-d42a8a7f2875

http://www.excel.studio-kazu.jp/kw/20030827105428.html

VBAでプリンターをコントロールすることは難しそうです。
↑を参考に代替案を試してみるといいかもです。

聞く前に、検索した方が解決が早いかもです。

投稿2019/02/09 09:03

mattuwan

総合スコア2136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koskos

2019/02/09 09:22

ご教示ありがとうございます プリンタを制御しようとしている訳ではありません。 ひとつのシートで多くの行を書き出せば、自然に複数ページとなります。 これを、両面印刷としたいだけで、プリンタへのその旨の登録は手作業です。
guest

0

ベストアンサー

プロパティという表記や、コードもないですし、Windowsの設定画面からやられているのだと思いますが、それがExcelを起動した後だとすると、Windowsのプリンター設定を変更しても、起動中のExcelには反映しなかったはずです。

Excel起動前に両面印刷設定にしていても両面印刷にならないという事でしたら流してください。

投稿2019/02/09 08:33

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koskos

2019/02/09 09:25

ご教示ありがとうございます。 >Windowsのプリンター設定を変更しても、起動中のExcelには反映しない・・ > えっ、そうなんですか? 確かにEXCEL起動後にプリンタプロパティを(手作業で)変更しています。 けれど、用紙のトレイなどの変更は「反映されて」います。 これをどー考えれば良いのでしょう?
koskos

2019/02/13 00:35

複数の環境(Win7+Excel2010+CanonLBP841C,Win10+EXCEL2016+NECMultiWriter8250NNPDL)で試してみました…ご指摘のとおりでした。 以下詳細を記しますが、略号等を示しますので。  PDPに○○を設定→プリンタドライバのプロパティを開き○○を設定     ExBを起動→EXCELを起動しブックを開いて該当ルーチンを走らせる        実行→開いているブックの該当ルーチンを走らせる と読み替えてください 実験1  PDPに片面を設定  ExBを起動 → 片面で二枚出力  PDPに両面を設定  実行 → 片面二枚で出力   実験2  PDPに両面を設定  ExBを起動 → 一枚に両面で出力  PDPに片面を設定  実行 → 一枚に両面で出力 これから 1 EXCELが起動している状態での 2 ドライバへの片面/両面の設定は 3 EXCELに反映されない と、ご指摘のとうりであることが確認できました。 そこで次の課題です。 上記3を EXCELに反映させる 方法は無いのでしょうか?
koskos

2019/02/13 07:35

詰まる所が、Windowsに言う「通常使うプリンタ」とEXCELの「アクティブプリンタ」は必ずしも同じではない、と思い至りました。 上記実験の第三手順は「通常使うプリンタ」に施したものなので、これを改めて「アクティブプリンタ」にしたらどうか? そのためには現在の「アクティブプリンタ」を解除と言うかいったん別のモノにしなくてはならぬ、と思うのですが、その手立てが判りません。 なにかしらのヒントでもいただければ幸いです。
退会済みユーザー

退会済みユーザー

2019/02/13 10:26

片面両面の設定は手動(任意)のままにしておくのならば、Windowsのコンパネ等ではなく、Excelの印刷設定画面からプリンターのプロパティを開いて設定してもらえば良いように思います。ここで行ったプリンター設定は、Windowsのプリンター設定には反映しません。アプリのプリンター設定は別インスタンスという感じですね。 もし、設定をVBAで何とかしたいならば、やはり他の回答にあるように、両面印刷と片面印刷のプリンター登録をしておき、それをVBAで指定するのが最適解になると思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問