PDA

Vollständige Version anzeigen : Email automatisch, wenn Zellinhalt geändert wird


nukleus
23.07.2012, 16:47
Hallo Leute,

nach dem ich nichts passendes gefunden habe, wende ich mich an Euch:

Ich möchte, dass Excel automatisch eine Email an mich verschickt, wenn der Inhalt einer Zelle durch manuelle Eingabe geändert wird.

Danke für Eure Hilfe!

Beverly
23.07.2012, 17:43
Hi,

welches Mail-Programm benutzt du?

<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/" onclick="window.open(this.href);return false"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

adix
23.07.2012, 20:00
Aufgrund von SPAM & Co ist es eher grob fahrlässig heute noch Emails automatisch zu versenden .. oder dies als Anwender in seinem Kontext zu ermöglichen.
Daher rate Ich Dir Generell von deinem Vorhaben ab.

Jedoch geht es hier ja um Office / Excel.

MS Excel unterscheidet bei einer Änderung nicht zwischen manuell .. oder automatischen Änderung einer Zelle.
Daher kann nur der "Change" Event des jeweiligen Worksheets verwendet werden.

Das Abfangen kann man über eine Klasse mit "With Events" (ich denke dies ist in Deinem Fall ein bisschen übertriegen) oder über


Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Cells.Count = 1 Then
'füge hier die Überprüfung rein .. ob es sich auch um "die" Zelle handelt ^^
End If

End Sub


realisisren.

Da der automatische Versand (anonymous Versand mal ausgeschlossen) zu 90% nicht funktioniert ..
kann ich Dir ohne weiteren Details keine Info's zum Versand geben.

Wenn Du jedoch mit einem 1Zeiler eine Email für den Anwender vorbereiten willst .. schau Dir mal das Handle "MailTo" und die API ShellExecute an.
(http://en.wikipedia.org/wiki/Mailto)


Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long,ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Sub Dummy()
ShellExecute hWnd, "open", "mailto:" & "dummy@none.de" & " ?Subject=" & "Test" & " &Body=" & "Email Body", vbNullString, vbNullString, 5
End Sub

nukleus
24.07.2012, 04:45
Hallo Karin,
ich benutze Windows Live Mail.
---
Hallo Adix.

Ich hab dein Makro in den Sheet eingefügt, in dem die zu überwachenden Zellel liegen. Leider mache ich noch irgend etwas falsch, deshalb habe ich einen Screenshot mit der Fehlermeldung angefügt.

Grüße

Thomas

nukleus
24.07.2012, 04:54
Ich zeige Euch mal, was ich in der betreffenden Arbeitsmappe hinterlegt habe:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("e10") Then Call EmailSenden
End Sub


Sub EmailSenden()
ShellExecute hWnd, "open", "mailto:" & "tkern@hotmail.de" & " ?Subject=" &

"Test" & " &Body=" & "Email Body", vbNullString, vbNullString, 5
End Sub

nukleus
24.07.2012, 05:19
So,mit diesem Makro kann ich Zelle E10 überwachen; bei Änderungen startet Outlook.
Nun habe ich nur noch ein kleines Problem: Es soll nicht nur Zelle E10 überwacht werden, sondern der Zellbereich E10 bis E71.
Wenn ich "E10:E71" ins Makro schreibe, bekomme ich eine Fehlermeldung.

So, hier das Makro:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("e10") Then Call Email
End Sub
Sub Email()



Dim ol, mail As Object
Set ol = CreateObject("Outlook.Application")
Set mail = ol.CreateItem(0)
mail.Subject = ("text")
mail.To = "[E-Mail-Adresse entfernt]"
mail.cc = ""
mail.bcc = ""
'mit body wird nur noch im txt-Format versandt!
mail.body = "Hallo "

mail.Attachments.Add ""
'Mail anzeigen
mail.Display
' mit dem folgenden Befehl kann direkt gesendet werden:
'mail.send

End Sub


Ich denke, jetzt habt Ihr' s gleich.

Danke!

Beverly
24.07.2012, 07:12
Hi,

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("E10:E71"), Target) Is Nothing Then
If Target.Count = 1 Then Email
End If
End Sub


<hr width="20%" align="left"><img src="http://excel-inn.de/images/grusz.gif" height=35" align="left" alt="Grußformel"><a href="http://excel-inn.de/" onclick="window.open(this.href);return false"><img border="0" src="http://excel-inn.de/images/logo1.gif" height=35" align="middle" alt="Beverly's Excel - Inn"></a>

nukleus
24.07.2012, 11:15
Hallo Beverly,

herzlichen Dank, es läuft!!!