Microsoft Excel

Herbers Excel/VBA-Archiv

Automatischer Emailversand - kleines Problem

Betrifft: Automatischer Emailversand - kleines Problem von: Christoph
Geschrieben am: 01.10.2014 11:56:26

Hallo Leute,

ich habe eine kleine Frage. Ich habe eine Liste mit unterschiedlichen Projekten und u.a. der jeweiligen Starttage der Projekte - https://www.herber.de/bbs/user/92926.xlsm

Ich habe nun begonnen ein Makro zu programmieren, welches automatisch eine Email versendet, wenn das Startdatum dem 'heutigen Datum' entspricht.

Function makro1_start()
'** Prozedur aufrufen
testemail
End Function

Sub testemail()
    
    Dim objApp  As Outlook.Application
    Dim objMail As Outlook.MailItem
    
    Set objApp = CreateObject("Outlook.Application")
    Set objMail = objApp.CreateItem(olMailItem)
    
    sSubject = Range("E6").Value
    sbody = Range("E6").Value
    
    objMail.To = "christophzaenker@gmx.de"
    objMail.Subject = sSubject
    objMail.Body = sbody
    objMail.ReadReceiptRequested = True
    
    objMail.Display
    objMail.Send
    
    Set objApp = Nothing
    Set objMail = Nothing
    
  End Sub

Wie man erkennen kann, ist der Betreff und der Textkörper noch statisch. Ich finde gerade keinen Ansatz, wie ich dies lösen könnte. Die Dynamik in Makros abzubilden fällt mir immer noch nicht so leicht.

Im Prinzip möchte ich, dass wenn das heutige Datum dem Startdatum eines Projektes entspricht (es können auch mehrere Projekte an einem Tag starten), dass dann eine automatisierte Email versendet wird. Diese Mail sollte Platzhalter enthalten um bspw. den Ort des Projektes, welches am betreffenden Tag beginnt, aufnehmen zu können.

Bspw:

Folgende Projekte starten: [Hamburg]; [...]; [...]

Für Anregungen, die mir den Raum zum tüffteln lassen, wäre ich super dankbar. Sobald ich in der Lage dazu bin, möchte ich mein (leider noch nicht ausreichend vorhandenes) VBA-Wissen gerne dem Forum zur Verfügung stellen.

Ich bedanke mich schonmal vielmals im Voraus und wünsche Euch noch einen schönen Tag.

VG, Christoph

  

Betrifft: AW: Automatischer Emailversand - kleines Problem von: yummi
Geschrieben am: 01.10.2014 12:42:03

Hallo Christoph,

evt noch die Spalten anpassen:

Sub testemail()
    
    Dim objApp  As Outlook.Application
    Dim objMail As Outlook.MailItem
    Dim llast As Long
    Dim i As Long
    Dim wkb As Workbook
    Dim wks As Worksheet
    
    Set objApp = CreateObject("Outlook.Application")
    Set objMail = objApp.CreateItem(olMailItem)
    Set wkb = ThisWorkbook
    Set wks = wkb.Sheets(1)
    
    llast = wks.UsedRange.SpecialCells(xlCellTypeLastCell).Row
    For i = 5 To llast
        If wks.Cells(i, 9).Value = wks.Cells(2, 2).Value Then
            sSubject = wks.Cells(i, 5).Value   'zelle aus Spalte E
            sbody = wks.Cells(i, 5).Value      'zelle aus Spalte E
            objMail.To = "christophzaenker@gmx.de"
            objMail.Subject = sSubject
            objMail.Body = sbody
            objMail.ReadReceiptRequested = True
            
            objMail.Display
            objMail.Send
    
        End If
    Next i
    Set objApp = Nothing
    Set objMail = Nothing
    
  End Sub
Sollte das liefern was du willst

Gruß
yummi


  

Betrifft: AW: Automatischer Emailversand - kleines Problem von: Christoph
Geschrieben am: 01.10.2014 21:24:54

Hallo Yummi,

tausend Dank... Eine kleine Frage hätte ich noch:

Sub testemail()
    
    Dim objApp  As Outlook.Application
    Dim objMail As Outlook.MailItem
    Dim llast As Long
    Dim i As Long
    Dim wkb As Workbook
    Dim wks As Worksheet
    
    Set objApp = CreateObject("Outlook.Application")
    Set objMail = objApp.CreateItem(olMailItem)
    Set wkb = ThisWorkbook
    Set wks = wkb.Sheets(1)
    
    llast = wks.UsedRange.SpecialCells(xlCellTypeLastCell).Row
    For i = 6 To llast
        If wks.Cells(i, 9).Value = wks.Cells(2, 2).Value Then
            sSubject = wks.Cells(i, 2) & " - " & wks.Cells(i, 5).Value 'zelle aus Spalte E
            sbody = wks.Cells(i, 2) & " - " & wks.Cells(i, 5).Value    'zelle aus Spalte E
            objMail.To = "zaenker.christoph@gmail.com"
            objMail.Subject = sSubject
            objMail.Body = "Für folgende Projekte muss zeitnah ein Investitionsantrag gestellt  _
werden:" & vbCrLf & sbody
            objMail.ReadReceiptRequested = True
            
            objMail.Display
            objMail.Send
    
        End If
    Next i
    Set objApp = Nothing
    Set objMail = Nothing
    
  End Sub
Die For-Schleife hast du doch eingebaut, um Fälle abzufangen in denen bspw. 2 Projekte das gleiche Startdatum haben, oder? Leider funktioniert dies nicht und ich finde leider nicht raus wo das Problem liegt.

Es kann sein, dass bspw. zwei Projekte am 01.10.2014 beginnen. In diesem Fall sollen jeweils beide Projekte auch im Email-Body angegeben werden. Wie kann ich dieses Problem lösen bzw. wo kann ich mich in die entsprechende Materie einlesen, um dieses Problem möglicherweise selber lösen zu können?

Vielen Dank für die Hilfe. VG, Christoph


  

Betrifft: AW: Automatischer Emailversand - kleines Problem von: yummi
Geschrieben am: 02.10.2014 09:20:32

Hallo Christoph,

die for Schleife sorgt dafür, das jede Zeile überprüft wird, ob Startdatum = eingestelltes Datum und verschickt jedesmal eien mail (so der plan).

Was geht denn nicht?

WEnn Du es alles in eienr mail haben willst:

    sbody = ""
    For i = 5 To llast
        If wks.Cells(i, 9).Value = wks.Cells(2, 2).Value Then
            sSubject = "Start folgender Projekte"
            sbody = sbody & vbcrlf & wks.Cells(i, 5).Value      'zelle aus Spalte E
        End If
    Next i
    objMail.To = "christophzaenker@gmx.de"
    objMail.Subject = sSubject
    objMail.Body = sbody
    objMail.ReadReceiptRequested = True
            
    objMail.Display
    objMail.Send
Ist ungetestet, sollte aber so gehen

Gruß
yummi


  

Betrifft: AW: Automatischer Emailversand - kleines Problem von: Christoph
Geschrieben am: 07.10.2014 13:53:11

Hallo Yummi,

entschuldige die verspätete Rückmeldung. Habe mich heute erst wieder VBA gewidmet. Deine Lösung funktioniert einwandfrei. Vielen vielen Dank dafür. Ich tüfftel gerade noch an einer Modifikation der Sache. Ggf. hole ich nochmal über das Forum rat ein. Aber erstmal versuche ich es gerade selber zu lösen - es geht darum, dass sichergestellt werden sollte, dass die Email genau einmal versendet wird. Es greifen nämlich 4 Personen auf die gleiche Datei zu und dann soll die Email nicht 4mal versendet werden :-) einen schönen Tag Dir.

VG, Christoph


 

Beiträge aus den Excel-Beispielen zum Thema "Automatischer Emailversand - kleines Problem"