2016-04-12 9 views
0

Ich arbeite an einem Thema, bei dem ich Excel-Daten in PowerPoint exportieren muss. Alles funktionierte gut, bis ich nur eine Rutsche hatte. Aber als ich versuchte, eine andere Folie hinzuzufügen, zeigt es Fehler:Fehler beim Hinzufügen einer neuen PPT-Folie aus Excel VBA, Fehler 429

run time error 429 : Active x component cannot create an Object.

Hier ist mein Code:

Dim pptSlide As Slide 
Dim pptLayout As CustomLayout 
'my code 
Set pptLayout = ActivePresentation.Slides(1).CustomLayout 'error at this line 
Set pptSlide = ActivePresentation.Slides.AddSlide(2, pptLayout) 

Sie wissen nicht, was falsch ist.

+0

Ihr Code funktioniert, wenn Sie in PowerPoint selbst ausgeführt werden. Verwenden Sie eine späte oder frühe Bindung? Dh haben Sie einen Verweis auf PowerPoint gesetzt? Versuchen Sie als Test, die Variablen als Objekt zu dimmen. –

+0

ja ich habe Bezug auf eine PowerPoint. Was meinen Sie mit Code, der in PowerPoint ausgeführt wird? @SteveRindsberg – Nikky

+0

Ich meinte nur, dass ich Ihren Code in PowerPoint ausgeführt habe, um zu überprüfen, ob er wie erwartet funktioniert hat. Wenn Sie PPT von einem anderen Programm aus automatisieren, ist es manchmal einfacher und schneller, den PPT-Teil IN Powerpoint zu debuggen. –

Antwort

0

Dieser Code funktioniert für mich, wenn es eine Folie im Deck gibt, aber es funktioniert natürlich nicht, wenn keine Folien im Deck sind, da es auf Folie 1 verweist, um einen Verweis auf das benutzerdefinierte Layout zu erhalten.

Dim pptSlide As Slide 
Dim pptLayout As CustomLayout 
'my code 
With ActivePresentation 
    ' If the deck has some slides, get a freference to the first slide's custom layout 
    If .Slides.Count > 0 Then 
    Set pptLayout = .Slides(1).CustomLayout 'error at this line 
    Else 
    ' If no slides in the deck, use the second custom layout from the master 
    ' (usually the Title and Content layout 
    Set pptLayout = .SlideMaster.Design.SlideMaster.CustomLayouts(2) 
    End If 
    Set pptSlide = .Slides.AddSlide(.Slides.Count + 1, pptLayout) 
End With 
+0

Hallo, habe versucht, deinen Code in meinen zu integrieren. Gibt immer noch den gleichen Fehler. an der Zeile "Mit aktiver Präsentation" – Nikky

+0

Vielleicht sollten Sie mehr Code als nur die Snippets, die Sie bisher zur Verfügung gestellt haben. –

+0

Es funktioniert, wenn ich oPPTApp.ActivePresentation hinzufügen. Die hinzugefügte neue Folie hat jedoch nicht das gleiche Layout wie die vorherige. Es ist eine leere Folie mit einem Titel. Wie bekomme ich genau das gleiche Format wie auf der vorherigen Folie? – Nikky

0

Hej, hatte ich den gleichen Fehler. Wenn Sie eine Folie duplizieren, wird daraus ein SlideRange. Alles, was Sie tun müssen, ist, den ersten Artikel aus dem Bereich wie folgt zu nehmen:

Dim spptRange As SlideRange 
    Dim sppt As PowerPoint.Slide 
    Set spptRange = PPApp.ActivePresentation.Slides(spptNr).Duplicate 
    Set sppt = spptRange.Item(1) 
Verwandte Themen