ich habe mit Hilfe diverser Foren, auch hier ein VBA gebaut, dass eine PDF erzeugt und diese als Anlage in eine Mail einfügt. Leider kann ich in dem Code nur einen Hauptemfänger z. B. aus einer Zelle und einen Empfänger in BCC aus einer Zelle einfügen.
Ich hätte gerne, dass es einen Hauptempfänger gibt und aus einer Liste aus einem anderen Tabellenblatt dann mehrere Empfänger in BCC eingefügt werden. Dabei soll unterschieden werden, ob der Empfänger die PDF täglich, wöchentlich (Mittwoch) oder Monatlich (erster Arbeitstag des Monats) erhält.
Geht das überhaupt?
Hier der verwendete Code:
'**********************************************
Option Explicit
Const MyPath As String = "C:\temp\"
Sub SendSheetAsPDF()
Dim MailTo As String
Dim MailBCC As String
Dim MailSubject As String
Dim MailText As String
MailTo = ActiveSheet.Range("Q2").Value
MailBCC = ActiveSheet.Range("Q3").Value
MailSubject = ActiveWorkbook.Name & " " & Format(Date, "DD.MMM.YYYY")
MailText = "Hallo Welt, (br) hier ist eine Datei!" 'HTML! die (br) gegen HTML-Zeilenumbruch _
tauschen
Call SendSheetOutlook(MailSubject, MailTo, MailBCC, MailText)
End Sub
'***************************************************************************
'Makro to send Excel-Sheet directly with outlook
'April 2013 by Klaus M.vdT.
'MODIFIED June 2013: Send pdf, not xlsx!
'original Code by mumpel / www.herber.de / 11.04.2013 11:23:25
'https:\/\/www.herber.de/forum/messages/1308295.html
'***************************************************************************
Private Sub SendSheetOutlook(sSubject As String, sTo As String, sBCC As String, sText As String) _
Dim olApp As Object
Dim AWS As String
Dim olOldBody As String
'define temporary Path and Filename
AWS = MyPath & "\" & Format(Date, "YYYYMMDD") & "_" & Format(Time, "hhmmss") & "_" & _
WorksheetFunction.Substitute(ActiveWorkbook.Name, ".xlsm", "")
'export File as PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=AWS, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
AWS = AWS & ".pdf"
'Make Email
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
.GetInspector.Display
olOldBody = .htmlBody
.To = sTo
.bcc = sBCC
.Subject = sSubject
.htmlBody = sText & olOldBody
.Attachments.Add AWS
End With
'remove TEMP file
'wenn du das PDF behalten möchtest, diese Zeile auskommentieren!
'sonst wird das temporäre PDF wieder gelöscht
'Kill AWS
End Sub
Wäre super, wenn jemand eine tolle Idee hätte. Schon Mal vielen Dank. Sorry, besser bekomme ich das mit dem Code nicht dargestellt.Gruß
Markus