2017-11-22 22 views
2

私は、ExcelブックのデータからPowerPointスライドを生成するツールを構築しています。私は仕事場のコンピュータと自宅のコンピュータとの間を行き来します。仕事用コンピュータは家庭用コンピュータが2016年の間にExcel 2013を持っています。これは一般的に問題ではありません...家のコンピュータから仕事用コンピュータに移動すると、v16オブジェクトライブラリからv15オブジェクトへの参照を変更するだけですとしょうかん。Excel/PowerPoint VBAとレイトバインド

私はエラーに遭遇しましたが解決できませんでした...詳細hereこれを解決するための提案の1つはレイトバインドに切り替えることでしたので、参照は必要ありませんでした。 ...私は

Dim PPApp As PowerPoint.Application 
Dim PPPres As PowerPoint.Presentation 
Dim PPSlide As PowerPoint.Slide 
Dim PPLayout As CustomLayout 
Dim PPshape As Variant 
Dim tBox As PowerPoint.Shape 

のようなものを設定し、その後、

元(早期バインディング)のバージョンで

これはかなり簡単にスイッチしたが、それは結果のPPTスライドにエラーにつながっていますスライドの

Set PPApp = New PowerPoint.Application 
Set PPPres = PPApp.Presentations.Open(fileName, msoTrue, , msoFalse) 

そして一部は、結果として得られるスライドの一部がどのように見える

wsGenerator.Activate 
wsGenerator.Range("B32:L37").Select 
Selection.Copy 
With PPSlide.Shapes.PasteSpecial(ppPasteMetafilePicture) 
    .Top = 450 
    .Left = 50 
    .Height = 100 
    .Width = 325 
End With 

で構築されましたこの

enter image description here

テーブル下部には、上記のコードで貼り付け部分です。

私は遅延バインディングに変更すると、私は単純にこれらの変更

'Dim PPApp As PowerPoint.Application 
Dim PPApp As Object 

'Dim PPPres As PowerPoint.Presentation 
Dim PPPres As Object 

'Dim PPSlide As PowerPoint.Slide 
Dim PPSlide As Object 

'Dim PPLayout As CustomLayout 
Dim PPLayout As Object 

'Dim tBox As PowerPoint.Shape 
Dim tBox As Object 

Dim PPshape As Variant 

を作るそして

'Set PPApp = New PowerPoint.Application 
Set PPApp = CreateObject("PowerPoint.Application") 

他のすべてが同じまま。結果のグラフは、今それが今でスライドの下部をオフに延びていることが、この

enter image description here

ノートのように見えます。

これについては、何か考えてください。

+0

www.pptxbuilder.comを試してみてはいかがですか?あなたがやっていることに似ています... –

答えて

4

宣言をレイトバインディングに変更したようですが、PowerPointの定数(ppPasteMetafilePictureなど)の一部を使用している可能性があります。これはもはや初期値に解決されず、デフォルト0

値を使用できるようにするには、ppPasteMetafilePictureのローカル定数を定義する必要があります。

脇に、Option Explicitを常に使用し、VBEは宣言されていない定数の使用状況を自動的に検出します。

+0

Duh!もちろん!ありがとうございました....私は一般的に常にオプションを明示的に使用しているので、自分自身も蹴っていますが、今回は何とか失敗しました。 – jerH

+0

@jerH VBEの設定で "変数宣言が必要です"というオプションがあります - それは自動的にすべてのプロジェクトのすべてのモジュールに 'Option Explicit'を追加します。また、[Rubberduck](http://rubberduckvba.com)を使用して、宣言されていないすべての識別子(およびその他の潜在的なコードの問題)を見つけることができます。 –

+0

好奇心から.. – jerH