2017-11-07 5 views
-1

VBAを使用してExcelからPowerpointにデータをコピーしようとしています。私は、動作するはずだと思う次のコードを手に入れましたが、すべての変数を宣言して特定してもエラーを表示し続けます。VBAを使用してExcelからPowerpointにデータをコピーする - エラー

Sub CopyToPPT() 

Dim DestinationPPT As String 
Dim rng As Range 
Dim PowerPointApp As PowerPoint.Application 
Dim myPresentation As PowerPoint.Presentation 
Dim mySlide As Object 
Dim myShape As Object 
Dim myShapeRange As Range 


DestinationPPT = "C:\powerpoint.pptx" 

'Open Powerpoint 
Set myPresentation = PowerPointApp.Presentations.Open(DestinationPPT) 


Set rng = ThisWorkbook.ActiveSheet.Range("B2:D14") 

Set mySlide = myPresentation.Slides(5) 
Set myShapeRange = mySlide.Shapes(mySlide.Shapes.Count) 
'Copy 
rng.copy 
'Paste 
    mySlide.Shapes.PasteSpecial DataType:=2 
    Set myShape = mySlide.Shapes(mySlide.Shapes.Count) 


    myShapeRange.Left = 234 
    myShapeRange.Top = 186 





End Sub 

ライン

Set myPresentation = PowerPointApp.Presentations.Open(DestinationPPT) 

私はこの問題を解決することができますどのように任意のアイデアを気に入っていないようですか?私はそれを実行してみたとき、私はエラーを取得する:

実行時エラー「91」:すべての

+0

代わりに 'Cのルートフォルダにそれを保存する:'、あなたの 'Desktop'フォルダに保存しようとすると、あなたのコード内のパスを変更します。それでも問題が解決しない場合は、エラーメッセージの内容を教えてください。それは "ファイルが見つかりません"ですか? – braX

+2

PPの新しいインスタンスを作成していないようです。 PPが最初に開かれるはずです;) 'Set PowerPointApp = New PowerPoint.Application' –

+0

ファイルは実際に私のCドライブのルートにはありません。実際には自分のドキュメントフォルダにありますが、機密情報の可能性があります – Anonymous

答えて

1

最初に設定されていない

オブジェクト変数またはWithブロック変数が、私は強くについて読むことをお勧めしますEarly and late binding

プレゼンテーションを開く前に、PowerPointアプリケーションの新しいインスタンスを作成する必要があります。

これは動作するはずです:

'your code 
Set PowerPointApp = New PowerPoint.Application 
'the rest of your code 
'Open Powerpoint 
Set myPresentation = PowerPointApp.Presentations.Open(DestinationPPT) 
+0

、働いていただきありがとうございます。 – Anonymous

+0

大歓迎です;) –

関連する問題