Clever-Excel-Forum

Normale Version: PDF Objekte Löschen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo liebes Forum.

Erst einmal danke an alle. Hier wird einem echt weiter geholfen. 

Hätte nochmal eine Frage. In einer Excel Datei lasse ich per Makro pdf erzeugen welche dann als Objekt in das Workshops eingefügt werden . Es wird als Symbol eingefügt , so daß wenn ich darauf klicke sich das PDF öffnet. 

Gibt es eine Möglichkeit wie ich in der ganzen Arbeitsmappe alle pdf löschen kann ? Würde mir nach Benutzung ersparen die PDF wieder zu löschen ( die Datei wird verschickt und dann sicherheitshalber alle personenbezogenen Daten darin gelöscht ).

Wichtig wäre das nur die PDF Objekte gelöscht werden. Nicht alle Objekte. 

Danke sehr
Weshalb fügst Du das überhaupt als Objekt ein? Du kannst doch auch die PDF-Datei direkt erstellen und verschicken, eventuell zusammen mit der Exceldatei.

Du kannst Deine Original-Datei auch als Vorlage (xltm) speichern. Auf dieser Grundlage beruhen dann die Dateien mit den Nutzerdaten. Dabei aber beachten, dass die Prozeduren auf die aktive Arbeitsmappe (ActiveWorkbook) referenzieren, nicht auf die Datei mit dem Code (ThisWorkbook).
Die Dateien direkt einfügen hat den Grund das sie von verschiedenen Benutzern benutzt wird und ein Ausgabepfad dann auf jeden PC der gleiche sein müsste. Deshalb das direkt einfügen. So klappt die Datei egal wer und auf welchem PC.

Für den Empfänger ist das auch recht einfach da die Daten archiviert werden aber mehr wird nicht damit gemacht.  Vielleicht muss man noch dazu sagen das es ca 20 pdf sind welche an 2 Tagen erzeugt werden und dann an 1 Empfänger gehen. So kann ich quasi die Datei auf 1 mal versenden
Hallöchen,

eine Exceldatei als Container zu verwenden ist trotzdem nicht gerade die beste Variante. Du könntest, wenn Du nicht 20 Anhänge willst, die pdf z.B. auch zippen, ggf. auch das Verzeichnis wo die drin liegen und dort legst Du auch die Exceldatei rein …

Eingebettete Objekte bekommst Du z.B. so raus:

Code:
Sub Makro1()
Dim objOLE As OLEObject
On Error Resume Next
For Each objOLE In ActiveSheet.OLEObjects
    MsgBox objOLE.SourceName 'funktioniert nur mit Verknuepfung
    MsgBox objOLE.Name
Next
End Sub

Wenn Du nur pdf als OLEObject eingefügt hast, dann passt eine Schleife mit diesen Objekten. Hast Du auch andere Dokumente eingefügt hast wird es problematisch Sad Den Dateinamen bekommst Du aus dem SourceNamen und den wiederum nur aus der Verknüpfung.


Wenn Du die pdf aber schon per Makro erzeugst und einfügst, dann gebe den Objekten doch einfach entsprechende Namen, z.B. pdf_1, pdf_2 oder wie auch immer und dann löschst Du alle Objekte, deren Namen mit pdf beginnt ...
(14.03.2020, 18:18)Timmihase schrieb: [ -> ]Gibt es eine Möglichkeit wie ich in der ganzen Arbeitsmappe alle pdf löschen kann ? Wichtig wäre das nur die PDF Objekte gelöscht werden. Nicht alle Objekte. 

Hallo, :19:

lass mal als erstes die Sub "Main_1()" laufen:

Code:
Option Explicit
Public Sub Main_1()
    Dim objOle As Object
    For Each objOle In Tabelle1.OLEObjects
        Debug.Print objOle.progID
    Next objOle
End Sub

Tabelle1 (das ist der Codename der Tabelle) musst du natürlich anpassen!

Wenn mit Adobe gearbeitet wird kommt dabei sowas raus (im Direktfenster) - "AcroExch.Document.DC".

Der zweite Code löscht dann:

Code:
Public Sub Main_2()
    Dim objOle As Object
    For Each objOle In Tabelle1.OLEObjects
        If objOle.progID Like "Acro*" Then
            objOle.Delete
        End If
    Next objOle
End Sub

Wenn dir so Ausdrücke wie "CodeName" oder "Direktfenster" nichts sagen - suche mal im Netz danach. :21:
(14.03.2020, 21:18)Timmihase schrieb: [ -> ](...) und ein Ausgabepfad dann auf jeden PC der gleiche sein müsste (...)
Das ist kein Problem. Environ("USERPROFILE") & "\Documents\" speichert im Benutzerpfad Dokumente.

(14.03.2020, 21:18)Timmihase schrieb: [ -> ](...) da die Daten archiviert werden (...)
Excel ist für eine rechtssichere Archivierung ohnehin nicht geeignet, da nicht manipulationssicher.
Hi,

Sorry für die späte Antwort. Der Code klappt perfekt. Danke

mumpel : Rechtssicher ist es natürlich nicht, das stimmt schon. Brauch es aber auch nicht rechtssicher Smile

Danke nochmals an alle