Collapse column

Autor Thema: Office 2013: VBA Code zum Auslesen von E-Mailadressen und versenden  (Gelesen 2155 mal)

Offline Davidoff99

  • Newbie
  • *
  • Beiträge: 5
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Wenig
  • Version [Office] : Office 2013
Office 2013: VBA Code zum Auslesen von E-Mailadressen und versenden
« 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

Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden und Dein Anliegen in Auftrag geben.
>>> Schnell und einfach ein unverbindliches Angebot anfordern. Per E-Mail an anfrage@excel-inside.de oder per Online-Formular
<<<

!!! Wichtige Information
!!! Dieses Forum steht aus technischen Gründen ab dem 11. September 2019 nur noch im Lesemodus zur Verfügung.
Das NEUE Office-Fragen-Forum kannst du aber unter der gewohnten Domain https://office-fragen.de wie gewohnt nutzen.

- Wir freuen uns auf deinen Besuch im neuen Forum.

Offline Davidoff99

  • Newbie
  • *
  • Beiträge: 5
    • Profil anzeigen
  • Office-KnowHow: Fortgeschritten
  • VBA-KnowHow- : Wenig
  • Version [Office] : Office 2013
Antw:Office 2013: VBA Code zum Auslesen von E-Mailadressen und versenden
« Antwort #1 am: März 09, 2016, 18:11:54 Nachmittag »
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
----

Wenn du dich noch intensiver mit Excel beschäftigen möchtest, dann empfiehlt sich ein Online-Kurs,
in dem du sehr viel über Excel erfährst und das gelernte umgehend in der Praxis anwenden kannst.