AW: VBA Macro Tabelle über Button als pdf sichern und
19.03.2017 09:55:01
fcs
Hallo Andre,
Wie erstelle ich nun diesen Button und wie sollte so ein Marco aussehen.
Fall noch nicht geschehen, dann musst du via Menü
Datei --> Optionen --> Menüband anpassen
die Hauptregisterkarte "Entwicklertools" einblenden.
In diesem Register kannst du unter "Einfügen" aus den Formularsteuerelementen die Schaltfläche wählen und dann auf dem Tabellenblatt plazieren.
Ein entsprechendes Makro kann dann wie folgt aussehen.
Die im Makro vorgegebenen Werte musst du an deine Anforderungen anpassen.
Der E-Mail-Versand erfolgt hier via MS Outlook.
Falls du ein anderes E-Mail-Programm verwendest, dann kann man evtl. das Makro anpassen.
Du kannst aber auch zum Beispiel vom AcrobatReader aus den Versand der Datei starten.
LG
Franz
'Erstellt unter Windows Vista / Microsoft Office 2010 professional / Excel 2010
Option Explicit
Sub Speichen_PDF_Jan()
' Speichen_PDF Makro und Versand als E-Mail-Anhang
Dim sPfad As String, sDatei As String
Dim sPDF_Datei As String
Dim objSheet As Object
Dim strBody As String
sPfad = "C:\Users\Public\Test\Data\"
sDatei = "ZEF_Jan_SPE_Jan_" & Format(Date, "YYYY-MM-DD") & ".pdf"
sPDF_Datei = sPfad & sDatei
Set objSheet = ActiveSheet
Sheets(Array("ZEF_Jan", "SPE_Jan")).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=sPDF_Datei, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True
objSheet.Select
If MsgBox("PDF jetzt als E-Mail-Anhang versenden?", vbQuestion + vbYesNo, _
"E-Mail-Versand") = vbYes Then
strBody = "Hallo xyZ," & Chr(10) & Chr(10) _
& "hier der aktuelle Stand der Dateien" & Chr(10) & Chr(10) _
& "mfg Andre"
Call E_Mail_Versand(varTo:="test@gmail.com", _
strSubject:="ZEF_Jan und SPE_Jan - Stand " & Format(Date, "YYYY-MM-DD"), _
varBody:=strBody, _
varAttachments:=sPDF_Datei, _
bolSend:=False)
End If
End Sub
Sub E_Mail_Versand(varTo, strSubject, _
Optional varBody, _
Optional varCC, Optional varBCC, _
Optional varAttachments, _
Optional bolSend As Boolean = False)
' #### E-Mail-Versand via Microsoft Outlook ####
'varTo E-Mail-Adresse(n) der E-Mai-Empfäner
'varCC E-Mail-Adresse(n) der Kopie-Empfäner
'varBCC E-Mail-Adresse(n) der Blind-Kopie-Empfäner
'strSubject Betreff/Subject der E-Mail
'varBody Text der E-Mail
'varAttachments Anhänge zur E-Mail - einzelner Dateiname (mit Pfad!) oder ein Array mit _
mehreren Dateinamen
'bolSend Wenn True wird die E-Mail espeichert und direkt gesendet _
Wenn False wird der Entwurf der E-Mail erstellt und in Outlook angezeigt
Dim objApp As Object 'Outlook.Application
Dim objMail As Object 'Outlook.MailItem
Dim varItem
Set objApp = VBA.CreateObject("Outlook.Application")
Set objMail = objApp.CreateItem(0) '0=olMailItem
With objMail
.To = varTo
If Not IsMissing(varCC) Then .CC = varCC
If Not IsMissing(varBCC) Then .BCC = varBCC
.Subject = strSubject
If Not IsMissing(varBody) Then .Body = varBody
If Not IsMissing(varAttachments) Then
If IsArray(varAttachments) Then
For Each varItem In varAttachments
.Attachments.Add varItem
Next
Else
.Attachments.Add varAttachments
End If
End If
If bolSend = True Then
.Save
.Send
Else
.Display
End If
End With
Set objApp = Nothing
Set objMail = Nothing
End Sub