
TechNet コラムへようこそ。このコラムでは、よく寄せられるシステム管理スクリプトに関する質問に Scripting Guys がお答えします。システム管理スクリプトについて質問がある場合は、scripter@microsoft.com (英語のみ) までお送りください。すべての質問に回答することはできないかもしれませんが、可能な限り対応いたします。
詳細情報
| • | |
| • | |
| • |
![]()
Scripting Guy さん、よろしくお願いします。既定で、スライドではなく配布資料が印刷されるように、PowerPoint の印刷オプションを設定する方法はありますか。
-- OG

OG さん、こんにちは。「雷は同じ場所には二度と落ちない」ということわざがありますが、Scripting Guys は当てにしなかったようですね。というのも、Scripting Guys は、スペインの宝くじに当選してから 1 年もたたないうちに、また当選したのですから。今回は、MS-WORD LOTTO LOTTERY で 100 万ドルが当たったんです。
どうもありがとうございます。実を言うと、今回の当選についてもとても興奮したんです。だって、100 万ドルというのは、このコラムを執筆している Scripting Guy の年収とほぼ同額なのです。まったく何もせずに大金を稼ぐ仕事のことですかって。うーん、まあそうですね。Scripting Guy の仕事とはつまりそういうことです。でも、給料にプラスで 100 万ドルのボーナスがもらえたのは、本当にすてきです。
さて、あなたの考えはわかっていますよ。これは詐欺の一種のようなものだとお考えでしょう。でも、そんなはずはありません。というのも、本当に Microsoft Worldwide Cooperation から電子メールが届いたんですから (興味深いことに、このコラムでは Microsoft と cooperation という単語が 1 つの文に出てきたのはこれが初めてでした)。それだけではありません。電子メールには、"MSW/JUN/SS06" というセキュリティ コードが含まれています。このセキュリティ コードは、"詐欺を防止する" ことに重点を置いて設計されています。それから、賞金は、アフリカで先行き不安な商売をする怪しい組織に連絡して手に入れるのではなく、イギリスのロンドン在住の Terry Woggan さんと直接連絡をとってもらいます (不思議なことに、電子メールでは、Terry Woggan さんのことをイギリスの外務大臣と説明しています。ご存知のように、Terry さんは実際にラジオ パーソナリティを務めており、ユーロビジョン ソング コンテストの解説者でもあります。彼にとってはその方が、外務大臣よりも重要なのです)。
とにかく、Scripting Guys は富と名誉を手に入れたので、非常に気分が良いです。実際、新たに得た幸運を皆さんと分かち合いたいと考えています。それは、棚ぼたで得た 100 万ドルをいくらか、あるいはすべて、皆さんに分配するということか、ですって。とんでもありません。どうしてそんなことを思いついたんでしょうか。皆さんと共有できるもっと貴重なものがあります。つまり、既定で、スライドではなく配布資料 (3 スライド/ページ) が印刷されるように PowerPoint の印刷オプションを変更できるスクリプトです。そのスクリプトを次に示します。
Const ppPrintOutputThreeSlideHandouts = 3
Set objPPT = CreateObject("PowerPoint.Application")
objPPT.Visible = True
Set objPresentation = objPPT.Presentations.Add
Set objSlide = objPresentation.Slides.Add(1,1)
Set objOptions = objPresentation.PrintOptions
objOptions.OutputType = ppPrintOutputThreeSlideHandouts
コマーシャルを引用すると、「PowerPoint の印刷オプションを設定する。プライスレス」ということです。
ご覧のとおり、まず (ppPrintOutputThreeSlideHandouts というすてきな名前の) 定数を定義し、その定数に値 3 を代入しています。この定数を使用して、既定値として設定する印刷オプションを PowerPoint に指示します。ここで、1 つ疑問に思ったことがあります。既定の印刷オプションとして代入できる値は他にもあるのでしょうか。もちろん、あります。定数と代入される値の一覧を次に示します。
定数 | 値 |
ppPrintOutputBuildSlides | 7 |
ppPrintOutputFourSlideHandouts | 8 |
ppPrintOutputNineSlideHandouts | 9 |
ppPrintOutputNotesPages | 5 |
ppPrintOutputOneSlideHandouts | 10 |
ppPrintOutputOutline | 6 |
ppPrintOutputSixSlideHandouts | 4 |
ppPrintOutputSlides | 1 |
ppPrintOutputThreeSlideHandouts | 3 |
ppPrintOutputTwoSlideHandout | 2 |
定数を定義したら、次に、PowerPoint.Application オブジェクトのインスタンスを作成し、Visible プロパティを True に設定します。これで、画面上に表示される PowerPoint の実行インスタンスが作成されます。では、PowerPoint.Application オブジェクトのインスタンスを作成して、Visible プロパティを True に設定するにはどうしたらよいでしょうか。おや、次の 2 行のコードを実行すればいいんですよ。
Set objPPT = CreateObject("PowerPoint.Application")
objPPT.Visible = True
印刷オプションを変更するには、PowerPoint プレゼンテーションが必要です。これは、印刷オプションは、PowerPoint 自体に関連付けられているグローバル オプションではなく、特定のプレゼンテーションに関連付けられているためです。したがって、次の 2 行のコードでは、(既定のテンプレートを使用して) 新しいプレゼンテーションを作成し、そのプレゼンテーションに 1 つのスライドを追加します。
Set objPresentation = objPPT.Presentations.Add Set objSlide = objPresentation.Slides.Add(1,1)
もちろん、新しいプレゼンテーションを作成しなくてもかまいません。既存のプレゼンテーションを開き、そのプレゼンテーションの印刷オプションを変更する方法もあります。たとえば、C:\Scripts\Test.ppt ファイルを開き、そのファイルの印刷オプションを変更するスクリプトは、次のようになります。
Const ppPrintOutputThreeSlideHandouts = 3
Set objPPT = CreateObject("PowerPoint.Application")
objPPT.Visible = True
Set objPresentation = objPPT.Presentations.Open("C:\Scripts\Test.ppt")
Set objOptions = objPresentation.PrintOptions
objOptions.OutputType = ppPrintOutputThreeSlideHandouts
次に、印刷オプションを変更します。次のコードでは、PrintOptions オブジェクトへの参照を作成し、ppPrintOutputThreeSlideHandouts 定数を OutputType プロパティに代入しています。
Set objOptions = objPresentation.PrintOptions objOptions.OutputType = ppPrintOutputThreeSlideHandouts
これで作業は完了です。ここで、[印刷] ボタンをクリックするか、プログラムで PrintOut メソッドを呼び出すと、PowerPoint はスライドではなく配布資料 (3 スライド/ページ) で印刷されます。これはまさに今回の目的の動作です。
注 : OutputType プロパティ以外に設定できる印刷オプションはあるのでしょうか。もちろん、あります。詳細については、Microsoft PowerPoint VBA ランゲージ リファレンスを参照してください。 |
これでご質問の回答になっているとよいのですが、OG さん。Scripting Guys は、MS-WORD LOTTO LOTTERY で当選した興奮が少し落ち着いたころ、すべてのことについて考え直し始めました。結局、当選金を配るのは、他でもないマイクロソフトなのでしょうか。うーん。