Beim Ausführen eines VB-Skripts zum Exportieren von Bildern mit Dateinamen wird ein Laufzeitfehler angezeigt

0

Ich muss viele Bilder aus einer Excel-Tabelle exportieren und einen aussagekräftigen Dateinamen zuweisen, der auf den Werten in einer bestimmten Spalte basiert. Ich habe eine großartige Antwort von Kyle gefunden, der ein Skript als Antwort auf eine ähnliche Frage gepostet hat. Wenn ich das Skript ausführe, funktioniert es jedoch einwandfrei, bis Zeile 238 (alle Bilder bis zu dieser Zeile werden korrekt exportiert). Dann wird der Prozess angehalten und der folgende Fehler generiert: Laufzeitfehler '-21477467259 (80004005)': Shape.Export: Illegaler Wert.

Meine VB-Kenntnisse sind nicht gut genug, um zu verstehen, was hier falsch läuft. Könnte mir bitte jemand hier raushelfen?

Dies ist der Code (bereitgestellt von Kyle), den ich verwendet habe. Ich habe nur den Speicherort des Ordners, den Namen des Arbeitsblatts und die Versatzwerte geändert, um auf die richtigen Werte abzielen zu können:

Const destFolder$ = "F:\backup\tmp\"

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("CASE_DATA")

Dim ppt As Object, ps As Variant, slide As Variant

Set ppt = CreateObject("PowerPoint.application")
Set ps = ppt.presentations.Add
Set slide = ps.slides.Add(1, 1)

Dim shp As Shape, shpName$
For Each shp In ws.Shapes
    shpName = destFolder & shp.TopLeftCell.Offset(0, -6) & ".png"
    shp.Copy
    With slide
        .Shapes.Paste
        .Shapes(.Shapes.Count).Export shpName, 2
        .Shapes(.Shapes.Count).Delete
    End With
Next shp

With ps
    .Saved = True
    .Close
End With
ppt.Quit
Set ppt = Nothing

Vielen Dank im Voraus für jede Hilfe!

Andamo
quelle
Können Sie das Direktfenster verwenden - excelcampus.com/vba/vba-immediate-window-excel um den Wert von shpName bei jeder Verwendung auszudrucken. So Debug.Print "[" & shpName & "]" nach der linie shp.Copy. Was enthält es, könnte es leer sein?
HelpingHand
Danke für deine Antwort! Ich habe das getan, was Sie gesagt haben, aber ich sehe nichts Besonderes im unmittelbaren Fenster, es zeigt jeden Dateinamen für jedes exportierte Bild und dann hört es einfach auf, den Fehler zu melden und diesen Teil des Codes hervorzuheben, wenn ich in der Fehlermeldung auf Debugge klicke: .Shapes (.Shapes.Count) .Export shpName, 2
Andamo
Wenn Sie als Andamo eine "Antwort" gepostet haben, registrieren Sie bitte ein Konto, anstatt mehrere nicht registrierte zu erstellen und (noch schlimmer!) Kommentare im Antwortfeld zu posten. Dann solltest du Führen Sie Ihr neu registriertes Konto zusammen mit dieses das Eigentum an der Frage zurückzugewinnen. Als Eigentümer können Sie die Frage bearbeiten und Kommentare dazu abgeben.
Kamil Maciorowski