Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<
Microsoft Office 2003-2019 => Excel => Thema gestartet von: Davidoff99 am März 08, 2016, 17:58:00 Nachmittag
-
Hallo liebe Forum Mitglieder,
ich versuche über ein VBA Modul, aus einer Excel Mappe mit unterschiedlichen Arbeitsblätter eine E-Mail an einen bestimmten Adressenbereich zu versenden. Hierbei verwende ich folgendes Skript:
---------------------
Sub Email_versenden()
Dim OlApp As Object
Dim olDummy As String
Dim Empfänger As Range
Dim Betreff As String
Dim Email As Range
Set OlApp = CreateObject("Outlook.Application")
Betreff = Range("B1").Value 'Liest das Thema aus Zelle B1 in der aktuellen Tabelle aus'
Email = ActiveWorkbook.Worksheets("Master Data") 'Setz Variable Email auf Arbeitsblatt "Master Data"'
Empfänger = Email.Range("I13:L40") 'Setz die Empfängerliste aus dem Arbeitsblatt "Maser Data" und dem Berreich "i30:l40" zusammen"
If Empfänger = "" Then Exit Sub
With OlApp.CreateItem(0)
Rem Name des Sendekontos in Anführungszeichen, wird hier jedoch nicht benötigt aktueller Benutzer = Absender
'Set .SendUsingAccount = .Session.Accounts.Item'
Rem Empfänger
.To = Empfänger
Rem Optional Kopie an, hier kann eine weitere Range definiert werden
.CC = ""
Rem Optional Blindkopie an, hier kann eine weitere Range definiert werden
.BCC = ""
Rem Email anzeigen zum Einfügen der Signatur
.GetInspector.Display
Rem Dummyzeile für Signatur. Zeile erforderlich
olDummy = .HTMLBody
Rem Betreff
.Subject = "E-Mail zum Thema " & Betreff
Rem Textkörper (Body) im HTML-Format. (1 = Nur-Text, 2 = HTML, 3 = Rich-Text)
.BodyFormat = 2
Rem "
" = Zeilenumbruch-Anweisung (nur bei HTML)
.HTMLBody = "Sehr geehrtes Projekt Team" & _
"
" & _
"im Anhang erhalten Sie eine Liste zum Thema " & _
Betreff & _
"." & .HTMLBody
Rem Mail sofort senden
Rem .Send
End With
End Sub
------------------------
Allerdings kann ich aus dem aktiven Arbeitsblatt nicht die Daten aus Arbeitsblatt „Master Data“ mit dem Bereich „i13:l40“ übernehmen. Hier sind die EmailAdressen hinterlegt. Diese werden durch eine entsprechende "Wechseln"-Funktion erstellt und mit einer "WENN" Abfrage als Aktive markiert.
Mir wird immer Laufzeitfehler 91 angezeigt und komme nicht weiter.
Wäre super wenn einer von euch mir hier weiterhelfen kann.
Grüße
Davidoff99
-
Hab die Lösung gefunden:
----
Sub Send_Mail()
Dim OlApp As Object
Dim olDummy As String
Dim EmailTo As String
Dim Betreff As String
Dim Betreff2 As String
Dim IsCreated As Boolean
Dim i As Long
Dim PdfFile As String, Title As String
Worksheets("Master Data").Activate 'Aktiviert das Sheet
EmailTo = Join(Application.Transpose(Worksheets("Master Data").Range("i17:i70").Value), ";") 'Liest die daten aus und setzt ein Semikon als trennung zwischen die Emailadressen
Worksheets("Bid Contacts List").Activate 'Aktiviert nächstes Sheet
Set OlApp = CreateObject("Outlook.Application")
Betreff = Range("B1").Value 'Liest das Thema aus Zelle B1 in der aktuellen Tabelle aus'
Betreff2 = Range("b2").Value 'Liest das Thema aus Zelle B2 in der aktuellen Tabelle aus'
' Define PDF filename
PdfFile = ActiveWorkbook.FullName
i = InStrRev(PdfFile, ".")
If i > 1 Then PdfFile = Left(PdfFile, i - 1)
PdfFile = PdfFile & "_" & ActiveSheet.Name & ".pdf"
' Export activesheet as PDF
Worksheets("Opps Summary").Activate 'Aktiviert das Sheet
Worksheets("Project-Timeline").Activate 'Aktiviert das Sheet
Worksheets("ToDo-Liste").Activate 'Aktiviert das Sheet
Worksheets("Report").Activate 'Aktiviert das Sheet
ThisWorkbook.Sheets(Array("Opps Summary", "Project-Timeline", "ToDo-Liste", "Report")).Select
With ActiveSheet
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=PdfFile, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
With OlApp.CreateItem(0)
Rem Name des Sendekontos in Anführungszeichen
'Set .SendUsingAccount = .Session.Accounts.Item'
Rem Empfänger
.To = EmailTo
Rem Optional Kopie an
.CC = ""
Rem Optional Blindkopie an
.BCC = ""
Rem Email anzeigen zum Einfügen der Signatur
.GetInspector.Display
Rem Dummyzeile für Signatur. Zeile erforderlich
olDummy = .HTMLBody
Rem Betreff
.Subject = Betreff & " | " & Betreff2 & " | " & " Project Update"
Rem Textkörper (Body) im HTML-Format. (1 = Nur-Text, 2 = HTML, 3 = Rich-Text)
.BodyFormat = 2
Rem "
" = Zeilenumbruch-Anweisung (nur bei HTML)
.HTMLBody = "<P STYLE='font-family:Trebuchet MS;font-size:11pt'>Dear Projekt Team" & _
"
" & _
"attached you will find the actually Project Overview of " & _
Betreff & " Project: " & Betreff2 & _
"." & strbody & .HTMLBody
.Attachments.Add PdfFile
Rem Mail sofort senden
Rem .Send
End With
' Delete PDF file
Kill PdfFile
' Quit Outlook if it was created by this code
If IsCreated Then OutlApp.Quit
' Release the memory of object variable
Set OutlApp = Nothing
End With
End Sub
----