2017-05-22 4 views
0

Ich übertrage Daten von Excel zu PowerPoint-Folien mit einem automatisierten Skript mit EXcel VBA. Ich versuche, den benutzten Bereich eines Excel-Arbeitsblattes zu kopieren und als Bild in eine Powerpoint-Vorlage der 4. Folie einzufügen und von dort aus neue Folien hinzuzufügen und die restlichen Arbeitsblätter auf die nächsten Folien zu kopieren.Kopie von VBA Excel zu Powerpoint

Der Code, der ich zur Zeit verwendet, wird die folgende Fehlermeldung erhalten „Objektvariable oder mit Blockvariable nicht gesetzt“

Kann mir jemand den Code für die folgenden vorschlagen.

Hoffe, das ist klar erklärt. Wenn nicht, bitte um mehr Klärung bitten.

Dank

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

Bitte korrekt Code formatieren, indem Vertiefungen Fixierung, so dass es Code formatiert ist, und entfernen Sie die zweizeilig Linien :) – samiles

+0

Und sagen, welche Zeile Fehler. – SJR

+0

Hallo, Danke für die Antwort. !!. Set PPslide = PPpres.Slides (4) .Shapes.Paste von dieser Zeile bekomme ich den Fehler als "Objekt Variable oder mit Block-Variable nicht gesetzt". Der Bereich des Excel-Arbeitsblatts kopiert, aber es wird nicht in eine bestimmte Folie (4. Folie wie erwähnt) eingefügt, nachdem die Vorlage von Powerpoint geöffnet wurde. –

Antwort

0

Versuchen Wechsel:

'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 

An:

'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 

Auch nach meinem Kommentar, werden Sie die folgenden letzten Zeilen ändern müssen Ihr Code:

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

An:

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

Vielen Dank .. funktioniert gut .. Aber bekommen Laufzeit Fehler 424 als "Objekt erforderlich" in der unteren Zeile der code 'machen PowerPoint sichtbar und aktiv PowerPointApp.Visible = True .. –

+0

Entschuldigung für die späte Antwort .. Vielen Dank für die schnelle Antwort .. Hat mir sehr geholfen –

+0

Kein Problem, froh, ich könnte helfen. Wenn Sie mit der Antwort völlig zufrieden sind, vergessen Sie nicht, die Antwort zu markieren. – CLR

Verwandte Themen