Powerpoint Macro - Laufzeitfehler 5

Moderator: ModerationP

Powerpoint Macro - Laufzeitfehler 5

Beitragvon Berni025 » 11. Aug 2017, 08:27

Hallo Zusammen,

ich verzweifle gerade etwas... Ich habe ein Powerpoint Macro vorliegen, dass im Endeffelt Daten aus einer Excel-Tabelle in eine Präsentation überschreiben soll.
Das ganze hat bis vor kurzem auch sehr gut funktioniert. Ich hatte ein paar kleine Änderungen vorgenommen, die aber keine Fehler verursacht haben.

Ich habe dann die Präsentation, natürlich nach erfolgreichem Testen, abgespeichert und dann den Ablageort verändert.
Ein Kollege wollte das ganze dann ausprobieren und bekommt jetzt:
Laufzeitfehler '5':
Ungültige Prozeduraufruf oder ungültiges Argument

Seit dem bekomme ich den selben Fehler, ganz unabhängig vom Ablageort (der aber sowieso irrelevant sein sollte)

habe den Fehler auf folgende Zeile eingegrenzt:

Code: Alles auswählen
Application.ActivePresentation.Slides(5).Copy


Kann mir das irgendwer erklären? Evtl. verstehe ich auch einfach den Laufzeitfehler 5 nicht. Gerne auch hier nochmal mögliche Ansätze?

Danke und viele Grüße,
Berni
Berni025
 

Re: Powerpoint Macro - Laufzeitfehler 5

Beitragvon Gast » 11. Aug 2017, 08:30

Die Folie 5 ist auch vorhanden. Ausgeblendet aber vorhanden!
Gast
 

Re: Powerpoint Macro - Laufzeitfehler 5

Beitragvon DerHoepp » 11. Aug 2017, 09:48

Hallo,

also mit nur der Zeile kann ich das Verhalten nicht nachstellen. Ist das Makro in einem Excel-Makro eingebunden, oder tatäschlich ein PPT-VBA-Makro?

Viele Grüße
derHöpp
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5586
Registriert: 14. Mai 2013, 11:08

Re: Powerpoint Macro - Laufzeitfehler 5

Beitragvon Berni025 » 11. Aug 2017, 10:11

Hallo derHöpp,

das ganze ist leider so umfangreich, dass es sich hier nicht reinkopieren lässt.
Evtl. kurz der Hintergrund:

Meine Präsentation hat beim Start eine Seite mit Parametern und dann 3 Vorlagenfolien.
Starte ich das Makro per PPT-Button, liest er erst mal die Parameter ein (dort kann z.B. vorab definiert werden welche Spalten aus der Excel übernommen werden sollen, wie diese in PPT tatsächlich heißen sollen und so weiter).
Anschließend löscht er die Folien, die durch eine neue, mit neuen Daten, ersetz werden sollen (Auswahl anhand des Folientitels).
Jetzt sollte er nach einer der drei Vorlagenfolien (Vorgabe aus den Parametern) suchen und diese in die PPT kopieren.

Der Code für die Foliensuche sieht wie folgt aus:

Code: Alles auswählen
Function Folie_Finden(sKomponente As String, iNbSlide As Integer, bFolieAdd As Boolean, Optional sAddVorlage As String) As Integer
Dim sld As Slide
Dim shp As Shape
Dim txtRng As TextRange
Dim foundtext As TextRange
Dim pres As Presentation

    Set pres = Application.ActivePresentation
    If iNbSlide = 0 Then
        i = 1
    Else
        i = iNbSlide
    End If
    For i = i To pres.Slides.Count
    Set sld = pres.Slides(i)
        For Each shp In sld.Shapes
                If shp.HasTextFrame And shp.Name = "Folientitel" Then
                    Set txtRng = shp.TextFrame.TextRange
                    Set foundtext = txtRng.Find(FindWhat:=sKomponente)
                    If foundtext Is Nothing Then
                        Folie_Finden = 0
                    Else
                        Folie_Finden = sld.SlideNumber
                        Exit Function
                    End If
                End If
        Next
    Next

    If Folie_Finden = 0 And bFolieAdd = True Then
        Folie_Finden = pres.Slides(iNbSlide + 1).SlideNumber
        If sAddVorlage = "" Then
            pres.Slides(Index:=pres.Slides.Count).Copy
        Else
            If sAddVorlage = "Vorlage 2" Then 'zwei Folien gleichzeitig einfügen, da Vorlage 2 keine Tabellen enthält
                pres.Slides(Index:=Folie_Finden(sAddVorlage, 0, False)).Copy
                pres.Slides.Paste Folie_Finden
                pres.Slides(Folie_Finden).Shapes("Folientitel").TextFrame.TextRange.Text = sKomponente
                pres.Slides(Folie_Finden).SlideShowTransition.Hidden = msoFalse
                sAddVorlage = "Vorlage 3"
                Folie_Finden = Folie_Finden + 1
            End If




            pres.Slides(Index:=Folie_Finden(sAddVorlage, 0, False)).Copy




        End If
        pres.Slides.Paste Folie_Finden
        pres.Slides(Folie_Finden).Shapes("Folientitel").TextFrame.TextRange.Text = sKomponente
        pres.Slides(Folie_Finden).SlideShowTransition.Hidden = msoFalse
        'Zwischenspeicher leeren
        CutCopyMode = False
    End If

End Function


Die Zeile, wo der Laufzeitfehler auftritt ist vom Rest mit Leerzeilen hervorgehoben.
Die Funktion wird aus dem Hauptprogramm das erste mal aufgerufen mit:
Code: Alles auswählen
rghtFolie = Folie_Finden("Produktlinie", 1, True, "Vorlage 1")


Das heißt also, nachdem er die alte Folie mit dem Folientitel "Produktlinie" gelöscht hat, sucht er erneut danach, findet sie nicht und springt in den unteren Teil der Funktion.
Dort sucht er im Anschluss nach "Vorlage 1", zieht dort den Folienindex raus und beim Versuch diese Folie zu kopieren scheitert das Makro...

Hoffe damit ist es klarer.
Vielen Dank und Grüße,
Berni
Berni025
 

Re: Powerpoint Macro - Laufzeitfehler 5

Beitragvon DerHoepp » 11. Aug 2017, 13:25

Hallo Berni,

naja... ne mehrfach rekursive Function, die ihren Namen sowohl als Rückgabewert, als auch als temporäre Variable verwendet und selbstständig die Struktur der Präsentation ändert ist nicht ohne weiteres nachvollziehbar.

Ich würde zunächst einmal versuchen, den Rückgabewert des rekursiven aufrufs in eine temporäre Long-Variable zu packen um dann zu kontrollieren, was beim zweiten Mal überhaupt zurückgegeben wird:
Code: Alles auswählen
            tmpSlideNo = Folie_Finden(sAddVorlage, 0, False)
            pres.Slides(tmpSlideNo).Copy

Aber selbst wenn die Rekursion einen falschen wert zurückgeben sollte, dürfte eigentlich kein Laufzeitfehler 5 auftauchen, sondern einer, der dir mitteilt, dass dein Wert ausserhalb des zulässigen Bereichs ist.

Ansonsten wäre es hilfreich, wenn du mal eine Beispieldatei (bitte abgespeckt!!!) zur Verfügung stellst, anhand derer sich das Verhalten nachstellen lässt.

Viele Grüße
derHöpp
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5586
Registriert: 14. Mai 2013, 11:08

Re: Powerpoint Macro - Laufzeitfehler 5

Beitragvon Berni025 » 11. Aug 2017, 13:35

Hallo derHöpp,

das mit der extra Variable (jetzt nicht unbedingt eine temporäre long) hatte ich ausprobiert.
Er gibt mir dann eine 5 zurück, was in diesem Fall auch der richtige Wert ist.
Daher auch mein Unverständnis. Da diese Funktion ja bereits funktioniert hat, nicht geändert wurde und plötzlich "kaputt" zu sein scheint :?

Kannst du mir erklären, wann genau ein Laufzeitfehler 5 auftreten sollte?

Grüße,
Berni
Berni025
 

Re: Powerpoint Macro - Laufzeitfehler 5

Beitragvon Berni025 » 11. Aug 2017, 13:38

Ok... Jetzt verstehe ich die Welt nicht mehr...
Die Dateien einfach aus purer Verzweiflung heraus mal auf den Desktop kopiert.
Geöffnet, ausgeführt und siehe da: Kein Problem!
Berni025
 

Re: Powerpoint Macro - Laufzeitfehler 5

Beitragvon Berni025 » 11. Aug 2017, 13:50

Es tut mir leid, wenn ich das hier vollspame.
Möchte nur alle Erkenntnisse weitergeben :)

Wenn ich das am Desktop ausführe, nicht speichere, schließe und erneut ausführe, dann geht es immer wieder.
Einmal gespeichert, kann ich das Makro nicht mehr fehlerfrei ausführen.

Gleichzeitig kann ich auch auf der bestehenden Präsentation per Hand keine Folien mehr kopieren.
Der Fehler lautet dann: Leider hat etwas nicht funktioniert, und PowerPoint ist jetzt möglicherweise nicht mehr stabil. Bitte schließen Sie ihre Präsentation, und starten Sie PowerPoint dann erneut.

Wo das Problem liegt ist mir deswegen aber immer noch nicht klar :?

Grüße,
Berni
Berni025
 

Re: Powerpoint Macro - Laufzeitfehler 5

Beitragvon DerHoepp » 12. Aug 2017, 13:25

Misteriös... Arbeitest du mit nem Mac? Sonst fällt mir da nix ein...
DerHoepp
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5586
Registriert: 14. Mai 2013, 11:08

Re: Powerpoint Macro - Laufzeitfehler 5

Beitragvon theoS » 16. Aug 2017, 21:00

Würde sagen, die Datei hat einen Schaden.
Die Folien mal in eine neue Datei kopieren und unter anderem Namen speichern.
Wenns dann wieder geht, war meine Vermutung richtig.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3694
Registriert: 19. Apr 2008, 00:14


Zurück zu PowerPoint Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast