Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1352to1356
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Email mit Hilfe von Makro verschicken

Email mit Hilfe von Makro verschicken
03.03.2014 15:37:02
Makro
Hallo,
ich hätte eine Frage bezüglich meines selbst erstellten Makros: Ich möchte bezogen auf eine Excel Datei eine Email verschicken, wenn die Spalte "Status Probezeit" (Zellen S4 bis S38) den Wert "noch 14 Tage" anzeigt. Die Email soll an die Emailadresse verschickt werden, die in der Spalte "Email" angeführt ist (Zellen T4 bis T38). Dazu hab ich im nachfolgenden meinen Makrocode angeführt, bei dem allerdings noch folgende Fehlermeldung auftritt: Laufzeitfehler 91 Objektvariable oder With-Blockvariable nicht festgelegt, dabei wird die Zeile "letzteZeile = zelle(Rows.Count, 1).End(xlUp).Row + 1" gelb unterlegt.
Option Explicit

Sub E_Mail_senden()
Dim zelle As Range
Dim outl
Dim Mail As Object
Dim letzteZeile As Long
Dim datenblatt As String
letzteZeile = zelle(Rows.Count, 1).End(xlUp).Row + 1
datenblatt = ActiveWorkbook.ActiveSheet.Name
For Each zelle In ThisWorkbook.datenblatt.Range("S4:S" & letzteZeile & "")
If zelle = "Noch 14 Tage" Then
Set outl = CreateObject("Outlook.Application")
Set Mail = outl.CreateItem(0)
Mail.Subject = "Erinnerung Probezeit"
Mail.body = "Sehr geehrter Herr..."
Mail.To = zelle.Offset(0, 1)
'Die Email Adresse des neben der Spalte Status Probezeit soll hier stehen
Mail.Display
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.AppActivate Mail
WshShell.SendKeys ("")
Set Mail = Nothing
Set outl = Nothing
Set WshShell = Nothing
End If
Next
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
letzteZeile =Cells(Rows.Count, 1).End(xlUp).Row +
03.03.2014 15:46:22
robert
owT

AW: letzteZeile =Cells(Rows.Count, 1).End(xlUp).Row +
03.03.2014 16:16:07
Kertesz
Hallo,
danke für die schnelle Antwort! Jetzt zeigt es mir allerdings folgende Fehlermeldung an:Laufzeitfehler 438 Objekt unterstützt diese Eigenschaft oder Methode nicht. Dabei wird folgende Zeile gelb unterlegt:
For Each zelle In ThisWorkbook.datenblatt.Range("S4:S" & letzteZeile & "")

ohne &"" owT
03.03.2014 16:20:31
Rudi

AW: Email mit Hilfe von Makro verschicken
03.03.2014 16:42:53
Makro
Hallo,
Das

letzteZeile = zelle(Rows.Count, 1).End(xlUp).Row + 1
datenblatt = ActiveWorkbook.ActiveSheet.Name
For Each zelle In ThisWorkbook.datenblatt.Range("S4:S" & letzteZeile & "")
ist Quatsch.
Die erste Codezeile bezieht sich auf das aktive Tabellenblatt und geht z.B. in die Hose, wenn dieses ein Diagrammblatt wäre.
Die zweite Codezeile speichert nur einen String (Text) in der Variablen datenblatt, und darum
kommt bei der 3. Codzeile eine Objektfehler.
Richtiges referenzieren, sofern es sich z.B. um das Tabellblatt "Tabelle99" handelt wäre:
    With ThisWorkbook.Worksheets("Tabelle99")
For Each zelle In .Range(.Cells(4, 19), .Cells(.Rows.Count, 1).End(xlUp).Offset(0, 18))
Next zelle
End With
Gruess Hansueli

Anzeige
AW: Email mit Hilfe von Makro verschicken
06.03.2014 08:53:34
Makro
Hallo,
vielen Dank zunächst für die Antworten! Ich habe nun folgenden Code, welcher auch ohne Fehlermeldung funktioniert und mir die Email generiert. Eine Frage hätte ich noch: Bis jetzt steht im Text der Email lediglich: Die Probezeit von ... läuft in 14 Tagen ab...Ich würde jetzt noch gerne den Namen der Person, deren Probezeit abläuft, in die Email miteinfügen. Ist das möglich? ich habe es mit "Range("A4:A39")" versucht (siehe unten), aber hier zeigt es mir folgende Fehlermeldung an: Fehler beim Kompilieren Syntaxfehler
Option Explicit
Sub E_Mail_senden()
Dim zelle As Range
Dim outl
Dim Mail As Object
Dim letzteZeile As Long
Dim quelle As String
Dim Datenblatt As Worksheet
Set Datenblatt = ActiveWorkbook.Sheets("Datenblatt")
letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row + 1
quelle = ActiveWorkbook.ActiveSheet.Name
For Each zelle In Datenblatt.Range("T4:T" & letzteZeile & "")
If zelle = "noch 14 Tage" Then
Set outl = CreateObject("Outlook.Application")
Set Mail = outl.CreateItem(0)
Mail.Subject = "Erinnerung Probezeit"
Mail.body = "Die Probezeit von Range("A4:A39") läuft in 14 Tagen ab"
Mail.To = zelle.Offset(0, 1)
'Die Email Adresse des neben der Spalte Status Probezeit soll hier stehen
Mail.Display
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.AppActivate Mail
WshShell.SendKeys ("")
Set Mail = Nothing
Set outl = Nothing
Set WshShell = Nothing
End If
Next
End Sub

Anzeige
AW: Email mit Hilfe von Makro verschicken
06.03.2014 16:35:20
Makro
Hallo,
 Mail.body = "Die Probezeit von " & Zelle.Offset(0,-19).Text & " läuft in 14 Tagen ab"
?
Gruess Hansueli

AW: Email mit Hilfe von Makro verschicken
10.03.2014 09:10:13
Makro
Hallo,
zunächst einmal danke für die Antwort, die mir sehr geholfen hat!
Ein Problem habe ich noch: Mit dem untenstehenden Code öffnet sich die Email Maske mit der Emailadresse, an die die Email auch geschickt werden soll. Damit die Email allerdings verschickt wird, muss ich noch "Senden" betätigen. Gibt es eine Möglichkeit, dass die Email ganz automatisch verschickt wird, wenn die jeweilige Zelle "noch 14 tage" anzeigt, d.h dass "Senden" nicht angeklickt werden muss?
Option Explicit
Sub E_Mail_senden()
Dim zelle As Range
Dim outl
Dim Mail As Object
Dim letzteZeile As Long
Dim quelle As String
Dim Datenblatt As Worksheet
Set Datenblatt = ActiveWorkbook.Sheets("Datenblatt")
letzteZeile = Cells(Rows.Count, 1).End(xlUp).Row + 1
quelle = ActiveWorkbook.ActiveSheet.Name
For Each zelle In Datenblatt.Range("T4:T" & letzteZeile & "")
If zelle = "noch 14 Tage" Then
Set outl = CreateObject("Outlook.Application")
Set Mail = outl.CreateItem(0)
Mail.Subject = "Erinnerung Probezeit"
Mail.body = "Die Probezeit von " & zelle.Offset(0, -19).Text & " läuft in 14 Tagen ab"
Mail.To = zelle.Offset(0, 1)
'Die Email Adresse des neben der Spalte Status Probezeit soll hier stehen
Mail.Display
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.AppActivate Mail
WshShell.SendKeys ("")
Set Mail = Nothing
Set outl = Nothing
Set WshShell = Nothing
End If
Next
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige