Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2016)
EXCELとプリンタドライバの間の遣り取り
投稿日時: 18/12/01 19:27:55
投稿者: S.Kos

みなさま、こんにちは
 
手作業でEXCELによる両面印刷は、難しいコトではありません。
ファイル→印刷で、選択したプリンタが両面印刷機能を持っていれば、設定欄にその旨の指定項目が現れます。
 
ということは即ち、EXCELとプリンタドライバの間で、遣り取りされている……はずです。
 
けれども残念なことに、この操作はマクロに記録されません。
 
EXCELとプリンタドライバの間の遣り取りについて、なにかしらご存知ではありませんか?

回答
投稿日時: 18/12/01 21:18:14
投稿者: WinArrow
投稿者のウェブサイトに移動

>EXCELとプリンタドライバの間で、遣り取りされている……はずです。
  
Excel側からプリンタのドライバを見ているだけで、
ドライバの情報は、Excelでは取り込んでいません。
 
つまり、プリンタドライバとのインタフェースは

ドライバを家に例えると、玄関の場所は教えるので、家の間取り、フロアーなど、玄関を入ってから見てね!
というようなものではないかな?
 
あまたあるプリンタの情報をExcel側で制御することは、無理ではないかと‥‥思います。

投稿日時: 18/12/04 12:32:05
投稿者: S.Kos

WinArrowさん、ご教示ありがとうございます。
 
>ドライバの情報は、Excelでは取り込んでいません。
>
そうでしょうか・・?
 
 
通常使うプリンタに「Microsoft Print to PDF」を指定して
EXCELを開き、ファイルから「印刷」へ進み「設定」欄の表示をメモしてください。
 
そのまま「プリンター」を開き、両面印刷機能を持つプリンタを選択すると・・
「設定」欄に「片面印刷」なる項目が現れます。
 
これはつまり、EXCELとプリンタドライバが、何らかを遣り取りしている証しではありませんか?
 
 
>あまたあるプリンタの情報をExcel側で制御することは、無理ではないかと‥‥思います。
>
御意!
けれども用紙サイズや用紙の向きなど、汎用パラメータはEXCELから制御しています
VBAならPageSetupですね。
 
片面/両面を切り分けるパラメータが、これらと同じく汎用であるとしたら、EXCEL側から制御できるように思います
 

回答
投稿日時: 18/12/04 14:00:22
投稿者: Suzu

S.Kos さんの引用:
そのまま「プリンター」を開き、両面印刷機能を持つプリンタを選択すると・・
「設定」欄に「片面印刷」なる項目が現れます。
 
これはつまり、EXCELとプリンタドライバが、何らかを遣り取りしている証しではありませんか?

 
やりとりしているでしょうね。
でも、やりとりしている事と、それをVBAから制御できる様に公開するかは別モノですよね。
少なくとも、Microsoftはそれを公のVBAのプロパティーとしては公開していないですよね。
(できないとは言いません。出来ないとMicrosoftが公言している情報元を探す気にはなれませんから)
 
 
出来るかも知れない事を探すのか
出来る事を組み合わせて実現させるのか
  (今回であれば、シート毎に印刷設定は可能。
   両面印刷にページ設定を行ったシートを持っておき非表示にしておく)
 
それは質問者さんの自由ですね。

回答
投稿日時: 18/12/04 14:01:16
投稿者: WinArrow
投稿者のウェブサイトに移動

>通常使うプリンタに「Microsoft Print to PDF」を指定して
>EXCELを開き、ファイルから「印刷」へ進み「設定」欄の表示をメモしてください。
 
当方では、バージョンの違いなのか?
「設定」欄そのものが分かりません。
>「設定」欄の表示をメモしてください
とは、どのようなことでしょうか?
  
>これはつまり、EXCELとプリンタドライバが、何らかを遣り取りしている証しではありませんか?
 
ドライバの情報を参照する方法にも
(1)ドライバのモジュールに任せる方法

(2)ドライバの情報をExcelが取得してExcelとして表示する方法
のような方法があると思います、
 
私は、「両面印刷」に関しては、前者だと思っています。
 
印刷設定画面では、「両面印刷」に関する項目は存在しませんよね?
 
Excel側で指定可能ならば、「両面印刷」に関する項目があるはずです。
 
 
 

投稿日時: 18/12/04 14:23:59
投稿者: S.Kos

重ねてのご教示、感謝です。
 
WinArrowさん
>印刷設定画面では、「両面印刷」に関する項目は存在しませんよね?
>
この板に画像を貼り付けられますか?
機能として、あるいはマナーとして、画像貼り付け可なら、簡単にお見せできるのですが・・
 
 

回答
投稿日時: 18/12/04 17:30:00
投稿者: ちゃこ

横から素人が失礼します。
 
>印刷設定画面では、「両面印刷」に関する項目は存在しませんよね?
Excel 2010ですが 「両面印刷」「片面印刷」が選択できます。
また、プリンターのプロパティで「両面印刷」を設定すればExcelの印刷画面で
「両面印刷」が選択されます。
 
ということは、プリンターのプロパティで「両面印刷」を設定したプリンターを
登録して、VBAで切り替えればよいのかな? と思いますが……
 
見当違いならごめんなさい <(_ _)>

投稿日時: 18/12/04 19:09:48
投稿者: S.Kos

ちゃこさん、ご教示感謝です。
 
>Excel 2010ですが 「両面印刷」「片面印刷」が選択できます。
>また、プリンターのプロパティで「両面印刷」を設定すればExcelの印刷画面で「両面印刷」が選択されます。
>
さきの投稿をご確認いただき、ありがとうございます。
 
>ということは、プリンターのプロパティで「両面印刷」を設定したプリンターを
>登録して、VBAで切り替えればよいのかな? と思いますが……
>
御意!
手が届く範囲(笑)にある環境では、最も確実な選択肢です。
 
けれども、遠く離れた事業所であったり、新たに動き始めた環境、あるいはプリンタの入れ替え・・
その全てでその都度、コレは難しいでしょう。

投稿日時: 18/12/05 14:55:52
投稿者: S.Kos

こんにちは、みなさま
両面印刷を巡ってネットを彷徨ったところ、.NET FrameWorkの
  System.Drawing.Printing.PrinterSettings.Duplex
を操作できればなんとかなる…? と思い至りました。
 
ところが、その操作手順が全く解らず、テストさえできずにいます。
知ってるよ〜、と言う人はおられませんか?

投稿日時: 18/12/06 12:06:29
投稿者: S.Kos

自己レスです
EXCEL/VBAは.NETではないため、.NET FrameWorkのアレコレは操作できない・・・と判りました。
 
ではC#でプリンタを制御する.exeを作り、EXCEL/VBAから起動したらいいじゃん! と思い立ちました。
プリンタの情報を取得するところまでは簡単でしたが、セットした情報が書き戻せない・・・そこで、わんくま同盟さんに尋ねたら・・
 
powerShellで十分、とのご教示、なんと簡単なハナシ。
この話題に興味を抱かれたなら
 bbs.wankuma.com/index.cgi?mode=al2&namber=89582
へどうぞ。
 
 
閉じます。