2017-05-22 11 views
0

エクセルVBAを使用して自動化されたスクリプトを使用してexcelからpowerpointまでのデータを転送します。私はエクセルワークシートのusedrangeをコピーし、それをパワーポイントのイメージとして貼り付けようとしています.4番目のスライドのテンプレートから、新しいスライドを追加し、残りのワークシートを次のスライドにコピーする必要があります。VBAからpowerpointにコピー

私が現在使用しているコードは、誰もが私の次のためのコードを示唆することができます、次のエラー

を「オブジェクト変数またはWithブロック変数が設定されていません」になっています。

希望が明確に説明されています。そうでない場合は、より明確に尋ねてください。

おかげ

Private Sub CommandButton2_Click() 
    Dim PP As PowerPoint.Application 
    Dim PPpres As PowerPoint.Presentation 
    Dim PPslide As Object 
    Dim PpShape As PowerPoint.Shape 
    Dim SlideTitle As String 
    Dim SlideNum As Integer 
    Dim WSrow As Long 
    Dim Sh As Shape 
    Dim Rng As Range 
    Dim myshape As Object 
'Open PowerPoint and create new presentation 
Set PP = GetObject(class, "PowerPoint.Application") 
PP.Visible = True 
PP.Presentations.Open FileName:=("\\C:\Users\Templates)" 
'Specify the chart to copy and copy it 
For Each WS In Worksheets 
    If (WS.Name) <> "EOS" Then 
     ThisWorkbook.Worksheets(WS.Name).Activate 
     ThisWorkbook.ActiveSheet.UsedRange.CopyPicture 
'pSlide.Shapes.Paste 
'Copy Range from Excel 
    Set Rng = ThisWorkbook.ActiveSheet.Range("A1:I8") 
'Copy Excel Range 
    Rng.Copy 
'Set PPslide = PPpres.Slides.Add(5, 33) 
PP.ActiveWindow.View.GotoSlide (4) 
Set PPslide = PPpres.Slides(4).Shapes.Paste 
'Paste to PowerPoint and position 
PPslide.Shapes.PasteSpecial DataType:=2 '2 = ppPasteEnhancedMetafile 
Set myshape = PPslide.Shapes(PPslide.Shapes.Count) 
    'Set position: 
     myshape.Left = 66 
     myshape.Top = 152 
End If 
Next 
'Make PowerPoint Visible and Active 
PowerPointApp.Visible = True 
PowerPointApp.Activate 
'Clear The Clipboard 
Application.CutCopyMode = Falseenter code here` 
End Sub 
+1

正しくそれがコードフォーマットされているように、くぼみを固定することにより、あなたのコードをフォーマットし、ダブルスペース行を削除:) – samiles

+0

そして、回線エラーを言って下さい。 – SJR

+0

こんにちは、ありがとうございました。 Set PPslide = PPpres.Slides(4).Shapes.Paste この行から "öbjectvariableまたはブロック変数が設定されていません"というエラーが表示されます。 Excelワークシートの範囲はコピーされていますが、Powerpointのテンプレート を開いた後、特定のスライド(前述の4番目のスライド)に貼り付けることはありません。 –

答えて

0

は変更してみてください:

'Set PPslide = PPpres.Slides.Add(5, 33) 
PP.ActiveWindow.View.GotoSlide (4) 
Set PPslide = PPpres.Slides(4).Shapes.Paste '<< CHANGING THIS LINE ONLY 
'Paste to PowerPoint and position 
PPslide.Shapes.PasteSpecial DataType:=2 '2 = ppPasteEnhancedMetafile 

へ:

'Set PPslide = PPpres.Slides.Add(5, 33) 
PP.ActiveWindow.View.GotoSlide (4) 
Set PPslide = PPpres.Slides(4) 
'Paste to PowerPoint and position 
PPslide.Shapes.PasteSpecial DataType:=2 '2 = ppPasteEnhancedMetafile 

また、私のコメントのとおり、あなたは、次の最後の数行を変更する必要がありますあなたのコード:

'Make PowerPoint Visible and Active 
PowerPointApp.Visible = True 
PowerPointApp.Activate 
'Clear The Clipboard 
Application.CutCopyMode = Falseenter code here` 
End Sub 

へ:

'Make PowerPoint Visible and Active 
PP.Visible = True 
PP.Activate 
'Clear The Clipboard 
Application.CutCopyMode = False 
'enter code here 
End Sub 
+0

ありがとうございました..うまく働いていますが、実行時エラー424が" Object Required "として以下の行に表示されています。コード 'PowerPoint VisibleとActiveを作成する PowerPointApp.Visible = True .. –

+0

返信ありがとうございました..すばらしい返答をありがとうございました..たくさん助けられました –

+0

問題なく、うれしく思いました。あなたがその答えに完全に満足しているなら、それに答えて印を付けることを忘れないでください。 – CLR

関連する問題