2017-01-31 15 views
-1

Excel VBAから新しいPPTを作成する方法を知りたいですが、作成中にアプリケーションを見ずに新しいPPTを作成できます。私はいくつかの洞察を見つけましたが、それは既存のPPTファイルを開くときにのみ機能しますが、新しいファイルを作成しています。 PowerPoint.Application.Activeを呼び出すアプリケーションを見ずにExcel VBAでPowerPointを作成する方法

Dim pptApp As PowerPoint.Application 
Dim pptPres As PowerPoint.Presentation 
Dim pptSlide As PowerPoint.Slide 
Dim pptShape As PowerPoint.Shape 
Dim excelTable As Excel.Range 
Dim SlideTitle As String 
Dim SlideText As String 
Dim SlideObject As Object 
Dim pptTextbox As PowerPoint.Shape 
Dim SlideNumber As String 

On Error Resume Next 
Set pptApp = New PowerPoint.Application 
Err.Clear 

Set pptPres = pptApp.Presentations.Add 
pptPres.PageSetup.SlideSize = ppSlideSizeOnScreen 
+0

「On Error Resume Next」は、ここでは特に悪い考えですが、この行に減らすことでコードを修正することができます。 PowerPointアプリケーションインスタンスを作成できない場合は、何も起こっていないかのようにコードを実行し続けることはできません。 –

+1

質問を編集して、そのコードスニペットが何であるかを明確にすることはできますか?目に見えない 'pptApp'を作ろうとしていますか?または、既存のpptファイルを開くコードからの抜粋?このコードは何もオープンしないので、 '.Visible = False'を指定しているようですので、実際の質問とどのように結びついているか明確ではありません。 –

+0

また、PowerPointのライブラリを参照しているようです( 'PowerPoint.Applicationとして*は*コンパイルしますか?) - なぜアプリケーションインスタンスの作成を遅くバインドしていますか?単にSet pptApp = New PowerPoint.Application'を実行してください。 –

答えて

2

は、まさにそれを行う - それはウィンドウが可視にされ、それをアクティブにします

Dim ppt As PowerPoint.Application 
Set ppt = New PowerPoint.Application 
Debug.Print ppt.Visible '<--Prints 0 (msoFalse) 
ppt.Activate    '<--THIS SHOWS THE WINDOW. 
Debug.Print ppt.Visible '<--Prints -1 (msoTrue) 

ただ、完全にpptApp.Activate行を削除します。

コメントで説明したように、エラーハンドラも修正する必要があります。この場合、最良の修正は完全に削除することです。 GetObjectは、既存のインスタンスが存在する場合はそれを返します。私は、あなたが "新しいPPTを作成する"と言ったときに、がないと仮定しています。は、実行中のPowerPointインスタンスがあればそれに接続し、そうでなければ新しいインスタンスを作成します。これが現在のコードです。

また、Microsoft PowerPoint X.Xオブジェクトライブラリ(Dim pptApp As PowerPoint.Applicationのように)への参照がある場合は、CreateObjectを使用しないでください。それは遅い結束のためのものです。参照がある場合は、早期バインディングを使用してください。

最後に、PowerPoint.Applicationを作成すると、がデフォルトで表示されません。です。

Set pptApp = New PowerPoint.Application 
+0

ありがとう。さて、あなたの投稿と他のコメントにしたがってコードを編集しました。しかし、それはまだ私のpptpresestation.addコードのために、おそらく目に見えますか? – thePB

+0

Presentations.Addは、省略可能なパラメータWithWindowをとります。 pptPres = Presentations.Add(msoFalse)を設定すると、すべてではないにしてもほとんどのことができるウィンドウレス(非表示)プレゼンテーションへの参照が得られます。 –

関連する問題