Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1872to1876
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA pdf erstellen mit OneDrive

VBA pdf erstellen mit OneDrive
08.03.2022 09:27:49
Stefan
Hallo zusammen,
Leider habe ich folgendes Problem in einer Arbeitsmappe. Durch Klicken eines Buttons wird die Excel zuerst gespeichert und dann ein PDF erstellt, welches an eine Email angehängt wird. Bevor unsere Firmen PCs auf OneDrive umgestellt wurden, wurde durch den Befehl "kill pdf" die PDF anschließend gelöscht. Mittlerweile kommt ein "Laufzeitfehler 53 - Datei nicht gefunden" und die erstellte pdf ist auch auf dem Desktop zu finden.
Wichtiger Hinweis: der Code soll für beide User "nicht-OneDrive" und "OneDrive" funktionieren. Kann wer helfen? Hier der aktuelle Code:

Sub Save_and_Send()
Dim c As Comment
For Each c In ActiveSheet.Comments
c.Visible = False
Next
ActiveWorkbook.Save 'letzten Stand speichern
Dim pdf As String
pdf = pdf_erstellen
Call permail(pdf)
Kill (pdf) 'pdf wieder löschen
End Sub

Function pdf_erstellen()
Dim pdf As String
Dim sep As String
sep = Application.PathSeparator
pdf = ThisWorkbook.Path & sep & ActiveSheet.Range("E3").Value & ActiveSheet.Range("J3").Value & ".pdf"
'ThisWorkbook.Path & sep & ThisWorkbook.name & ".pdf" 'Speicherpfad
If Sheets("Tabelle3").Visible = xlSheetVisible Then
Sheets(Array("Tabelle1", "Tabelle2", "Tabelle3")).Select
Else
Sheets(Array("Tabelle1", "Tabelle2")).Select
End If
On Error Resume Next
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdf, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
On Error GoTo 0
pdf_erstellen = pdf
Sheets("Tabelle1").Select 'Gruppierung aufheben
End Function

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA pdf erstellen mit OneDrive
08.03.2022 16:25:51
Yal
Hallo Stefan,
dann baue deine eigene Kill-Funktion:

Sub MyKill(DateiPfad As String)
'Version Early Binding mit Verweis auf "Microsoft Scripting Runtime"
'Dim FSO As Object
'    Set FSO = New FileSystemObject
'Version Late Binding (ohne "Extras", "Verweise.." )
Dim FSO As FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")
'Datei löschen (beide Version gleich)
FSO.GetFile(DateiPfad).Delete True
End Sub
VG
Yal
AW: VBA pdf erstellen mit OneDrive
09.03.2022 10:23:38
Stefan
Danke Yal für deine Hilfe.
Pdf wird nun an die Mail angehängt und anschließend auch ge-killed.
Allerdings kommt folgender Fehler:
Fehler beim Kompilieren: Benutzerdefinierter Typ nicht definiert.
FSO As FileSystemObject ist dabei blau hinterlegt.
Kannst du helfen?
Anzeige
AW: VBA pdf erstellen mit OneDrive
09.03.2022 10:29:21
Stefan
... sorry, muss mich korrigieren, das pdf wird doch nicht ge-killed und erscheint auf dem Desktop.
AW: VBA pdf erstellen mit OneDrive
09.03.2022 12:18:26
Yal
Hallo Stefan,
Du hast natürlich sofort gegoogelt, was Early und Late Binding ist, und könnte sofort verstehen, was
Verweis auf "Microsoft Scripting Runtime"
bedeutet.
Daher meine Verwechselung korrigieren:

Sub MyKill(DateiPfad As String)
'Version Early Binding mit Verweis auf "Microsoft Scripting Runtime"
'Dim FSO As FileSystemObject
'    Set FSO = New FileSystemObject
'Version Late Binding (ohne "Extras", "Verweise.." )
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
'Datei löschen (beide Version gleich)
FSO.GetFile(DateiPfad).Delete True
End Sub
VG
Yal
Anzeige
AW: VBA pdf erstellen mit OneDrive
09.03.2022 12:41:48
Stefan
Habe tatsächlich gegoogelt und habe das dann auch mit dem Early und Late binding verstanden. Habe mich dann bewusst für Late Binding entschieden, da ich nicht jedem User dieser Arbeitsmappe zumuten kann, dass der MS Scripting Runtime Verweis aktiviert wird.
Der "Tippfehler" ist mir leider nicht aufgefallen, da sind meine VBA Kennnisse zu schlecht.
Danke dir. Jetzt funktioniert alles.
Vielen Dank für die Rückmeldung
09.03.2022 13:30:29
Yal
Hallo Stefan,
mit der Bitte für die Entschuldigung für meine Untertöne. Ich übersehe manchmal, dass was ich als einfach einstufe, eigentlich für "noch nicht fortgeschrittenen" gar nicht so selbstredend.
Das Einbinden von einer Bibliothek wird nur einmal von dem Entwickler vorgenommen. Anschliessend ist es im Code definiert (wenn auch nicht sichtbar), dass die Bib angebunden ist, und der Enduser muss nichts anderes machen, als den Code anzustossen in dem er irgendwo einen Knopf anklickt (oder Alt+F8, Makro auswählen).
Ich empfehle den Early Binding, weil dann stehen die Methode/Eigenschaften des Objektes per Intellisense (Strg+Leertaste) beim Programmieren zur Verfügung. Auch in der Objektkatalog (F2 oder Ansicht, Objektkatalog) ist die Bibliothek sichtbar. Es ist für ein schnelleres Verstehen von VBA hilfreich.
VG
Yal
Anzeige
AW: Vielen Dank für die Rückmeldung
09.03.2022 13:39:36
Stefan
Kein Problem und danke nochmal für deine Feedback und die Empfehlung zwecks Early Binding.

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige