Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.04.2024 14:59:21
23.04.2024 14:47:39
23.04.2024 14:23:45
Anzeige
Archiv - Navigation
1656to1660
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
Excel als PDF versenden
26.11.2018 09:30:47
Roger
Guten Tag zusammen.
Im Folgenden Script wird normalerweise das aktuelle Excel-File als Excel per Mail versendet.
Nun habe ich aber ein separates Excel-Blatt das als PDF versendet werden soll und habe das Script angepasst. Aber irgend wo mache ich noch einen Denkfehler denn, das Excel-File wird zwar als PDF generiert, aber als PDF.xlsx.
Für einen Hinweis wäre ich froh.

Sub TabellenblattVerschickenAssurancePDF()
'Blatt zum PDF'
Dim Source As Range
Dim Dest As Workbook
Dim wb As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim OutApp As Object
Dim OutMail As Object
Set Source = Nothing
On Error Resume Next
Set Source = Range("B1:J99").SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Source Is Nothing Then
MsgBox "The source is not a range or the sheet is protected, " & _
"please correct and try again.", vbOKOnly
Exit Sub
End If
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Set wb = ActiveWorkbook
Set Dest = Workbooks.Add(xlWBATWorksheet)
Source.Copy
With Dest.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial Paste:=xlPasteValues
.Cells(1).PasteSpecial Paste:=xlPasteFormats
.Cells(1).Select
Application.CutCopyMode = False
End With
TempFilePath = Environ$("temp") & "\"
TempFileName = "Selection of " & wb.Name & " " _
& Format(Now, "dd-mmm-yy h-mm-ss")
If Val(Application.Version) 

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel als PDF versenden
26.11.2018 09:40:03
mumpel
Hallo!
Als PDF direkt speichern geht erst ab Excel 2007. Stichwort ExportAsFixedFormat. Bis Excel 2003 benötigst Du ein separtes PDF-Programm. Über "SaveAs" kann man keine PDF erstellen.
Gruß, René
AW: Excel als PDF versenden
26.11.2018 09:46:22
Roger
Hallo René
Wie ich schon angewählt habe, arbeite ich mit Excel Version 2013
AW: Excel als PDF versenden
26.11.2018 10:02:13
mumpel
Dann nimm ExportAsFixedFormat. Wenn Du die Datei alleine nutzt benötigst Du auch keine Prüfung der Excelversion, die kannst Du dann weglassen.
AW: Excel als PDF versenden
26.11.2018 10:16:30
Roger
Dann wäre das so richtig?
Anstelle;
If Val(Application.Version) < 12 Then
'You use Excel 2000-2003
FileExtStr = ".pdf": FileFormatNum = -4143
Else
'You use Excel 2007-2010
FileExtStr = ".pdf": FileFormatNum = 51
End If
Dieses
ExportAsFixedFormat
Oder wo muss ich dann das definieren?
Anzeige
AW: Excel als PDF versenden
26.11.2018 12:33:43
Roger
So, ich habe jetzt noch einiges umgebaut. Funktioniert so einwandfrei.
Ich habe allerdings noch zwei Fragen.
1. Wie kann ich das Script so einstellen, dass ich die Mailadresse selber im Outlook An: eingeben kann und nicht vordefiniert wird?
2. Das PDF wird im Moment vom aktiven File generiert. Ist es möglich den Ausführbutton auf einer anderen Excel-Seite zu platzieren?
Sub PDF_Mail()
Dim name As String
Dim datei As String
' PDF speichern mit individuellem Namen (Name + Datum)
datei = "Bestätigung" & Mid(Date, 1, 2) & Mid(Date, 4, 2) & Mid(Date, 9, 2) & _
"_" & Mid(Time, 1, 2) & Mid(Time, 4, 2) & Mid(Time, 7, 2) & "test.pdf"
name = ActiveWorkbook.Path + "\" + datei
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
name, Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
OpenAfterPublish:=False
' Diese Datei als Mail senden per Outlook
Dim olApp As Object
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
'Empfänger
.Recipients.Add "max.mustermann@muster.com"
'Betreff
.Subject = "Bestätigung vom " & Date & " um " & Time
'Nachricht
.Body = "Anbei Ihre Bestätigung vom " & Date & " um " & Time & " Uhr."
'Lesebestätigung aus
.ReadReceiptRequested = False
'Dateianhang
.Attachments.Add name
.Send
End With
Set olApp = Nothing
End Sub

Anzeige
AW: Excel als PDF versenden
26.11.2018 12:49:56
Roger
Den Punkt 1. konnte ich lösen. Mit .Display wird das Mail nicht direkt versendet und man kann die Adresse noch selber rein schreiben.
AW: Excel als PDF versenden
26.11.2018 15:24:47
mumpel
Zu 1.: Einfach ".Recipients.Add" weglassen, und ".Send" durch ".Display" ersetzen.
Zu 2.: Die Prozedur kannst Du auch in der persönlichen Makroarbeitsmappe (personal.xslb)ablegen und in die Schnellzugriffleiste legen. Dann ist sie in allen Arbeitsmappen verfügbar.
Korrektur
26.11.2018 15:26:41
mumpel
personal.xlsb natürlich (nicht xslb). ;-)
AW: Korrektur
27.11.2018 08:24:37
Roger
Guten Morgen
Das mit Punkt 1 funktioniert bestens. Ist erledigt.
Das mit Punkt 2 ist komplizierter da ich mein Excel-File an verschiedene User an verschiedenen Standorten schicke. Die müssten dann jeder diese Prozedur im personal.xlsb vornehmen. Wenn das File immer am gleichen Standort bliebe, wäre das sicher lösbar. Gibt es denn Möglichkeiten das Script über den Button welcher im File A ist, die Prozedur, sprich das PDF welches im File B ist auszuführen?
Anzeige
AW: Korrektur
27.11.2018 09:15:55
mumpel
Stichwort: Application.Run
Dann muss/solltestt Du in der Prozedur aber auf die richtige Datei referenzieren.
AW: Korrektur
27.11.2018 09:27:54
Roger
Ah, ich verstehe. Dann müsste ich das in etwa so einbauen
Application.Run "Bestätigung.xlsx!Macro1"
AW: Korrektur
27.11.2018 10:11:38
mumpel
Bestätigung.xlsm. Du musst die Dateien als XLSM speichern. XLSX-Dateien können keine Makros speichern.
AW: Korrektur
27.11.2018 10:58:50
Roger
Sorry! ich habe meine Datei natürlich als .xlsb gespeichert.
Da ich nur ein bescheidener VBA Anwender bin weis ich nicht genau wo ich den Application.Run im Script platzieren muss.
Ich vermute mal nach dem name=ActiveWorkbook.Path + usw.
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige