PDA

Vollständige Version anzeigen : Bei Änderung in Excel soll Email an Outlook versendet werden


Aprilia_12
26.06.2014, 14:36
Hallo Zusammen,
hat jemand von Euch ein Lösungsvorschlag für folgende Wunschvorstellung:

Ist es möglich ein Makro (oder ähnliches) in ein Excel-Sheet (2010) zu betten, welches eine E-Mail an eine (immer) feste E-Mail-Adresse versendet, sobald eine Änderung/Speicherung an dem Excel-Sheet vorgenommen wurde. Die Datei selber befindet sich immer im Netzwerk. Verwendung wäre in einem E-Mail-Netzwerk, wobei jeder User eine eigene E-Mail-Adresse in Outlook 2010 am Einzelarbeitsplatz verwendet. Die Info-E-Mail als solches sollte immer nur an eine E-Mail-Adresse versendet werden.

Ich muss Euch mitteilen, dass ich überhaupt keine Ahnung von Makro-Programmierung habe.

Vielen lieben Dank im Voraus

BrunMi
27.06.2014, 09:47
Hi Aprillia,

Ist natürlich möglich.
Wichtig ist nur, dass du die Datei als .xlsm (also Excel Datei mit Makro) speicherst.

Folgenden Code kopierst du bitte bei der Arbeitsmappe rein:

Private Sub MailSenden()
Dim olAppication As Object
Dim objEMail As Object

Set olAppication = VBA.CreateObject("Outlook.Application")
Set objEMail = olAppication.CreateItem(0)

With objEMail
.To = "irgendwas@irgendwer.at"
'Betreff
.Subject = "Automatische Mail vom Excel"
'Nachricht
.Body = "Die Excel Datei wurde geändert."
.display
End With
SendKeys "%s", True
SendKeys "^{ENTER}", True

Set objEMail = Nothing

End Sub

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
MailSenden
End Sub

Dann sollte eigentlich immer wenn die Datei gespeichert worden ist eine Mail an die im Code eingetragenen Adresse gesendet werden (irgendwas@irgendwer.at musst du noch durch deine Adresse ersetzen.)

Im Anhang sende ich dir eine Beispieldatei. Dort habe ich das Makro schon eingebaut.

LG
BrunMi

Aprilia_12
27.06.2014, 16:18
Vielen vielen Dank.

Aprilia_12
27.06.2014, 16:24
Können Sie mir sagen wo ich die Mailadresse noch ändern kann ?`


LG

BrunMi
30.06.2014, 06:15
Hallo Aprilia,

Ersetzen Sie bitte einfach im Code "irgendwas@irgendwer.at" durch Ihre Email Adresse.

Private Sub MailSenden()
Dim olAppication As Object
Dim objEMail As Object

Set olAppication = VBA.CreateObject("Outlook.Application")
Set objEMail = olAppication.CreateItem(0)

With objEMail
.To = "irgendwas@irgendwer.at" 'DEN ROT MARKIERTEN BEREICH LÖSCHEN UND IHRE EMAIL ADRESSE EINTRAGEN
'Betreff
.Subject = "Automatische Mail vom Excel"
'Nachricht
.Body = "Die Excel Datei wurde geändert."
.display
End With
SendKeys "%s", True
SendKeys "^{ENTER}", True

Set objEMail = Nothing

End Sub

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
MailSenden
End Sub

Aprilia_12
10.07.2014, 10:17
Besten Dank nochmal!

Gibt es noch die Möglichkeit, dass die Excel-Dateil automatisch mit versendet wird ?

Viele Grüße

BrunMi
10.07.2014, 10:53
Hallo nochmal,

Das sollte folgendermaßen funktionieren:

Private Sub MailSenden()
Dim olAppication As Object
Dim objEMail As Object
Dim Name as String

Set olAppication = VBA.CreateObject("Outlook.Application")
Set objEMail = olAppication.CreateItem(0)

ThisWorkbook.Save
Name = ThisWorkbook.FullName

With objEMail
.To = "irgendwas@irgendwer.at" 'DEN ROT MARKIERTEN BEREICH LÖSCHEN UND IHRE EMAIL ADRESSE EINTRAGEN
'Betreff
.Subject = "Automatische Mail vom Excel"
'Nachricht
.Body = "Die Excel Datei wurde geändert."
.Attachments.Add Name
.display
End With
SendKeys "%s", True
SendKeys "^{ENTER}", True

Set objEMail = Nothing

End Sub

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
MailSenden
End Sub

Aprilia_12
10.07.2014, 11:56
Vielen Dank

aber da kommt immer die Meldung:

Laufzeitfehler 28

Nicht genügend Stapelspeicher :(

Mc Santa
10.07.2014, 11:58
Hallo,

wie groß ist deine Datei?

VG

Aprilia_12
10.07.2014, 12:03
Momentan 311 KB

Grüße

BrunMi
10.07.2014, 12:21
Tut mir leid,
Hatte nen kleinen Fehler drin.

So sollte es funktionieren.


Private Sub MailSenden()
Dim olAppication As Object
Dim objEMail As Object
Dim Name As String

Set olAppication = VBA.CreateObject("Outlook.Application")
Set objEMail = olAppication.CreateItem(0)

Name = ThisWorkbook.FullName

With objEMail
.To = "irgendwas@irgendwer.at" 'DEN ROT MARKIERTEN BEREICH LÖSCHEN UND IHRE EMAIL ADRESSE EINTRAGEN
'Betreff
.Subject = "Automatische Mail vom Excel"
'Nachricht
.Body = "Die Excel Datei wurde geändert."
.Attachments.Add Name
.display
End With
SendKeys "%s", True
SendKeys "^{ENTER}", True

Set objEMail = Nothing

End Sub

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
MailSenden
End Sub

Mc Santa
10.07.2014, 12:25
Hallo,

wo hast du den Code angepasst?

VG

BrunMi
10.07.2014, 13:21
Hallo Santa,

Hab die Zeile

ThisWorkbook.Save

rausgelöscht.

Da der Code beim Workbook_AfterSave Ereignis ausgeführt wird, war das dann vorher quasi eine Endlosschleife. ;)

So sollte es jetzt aber passen.

LG
BrunMi

Mc Santa
10.07.2014, 13:43
Hallo,

Ok, danke für die Erläuterung :)

VG

BrunMi
10.07.2014, 13:54
Bitte gerne.
Dachte mir schon fast das es etwas schwer wird den Unterschied zu sehen ^^

LG
BrunMi

Aprilia_12
23.07.2014, 09:35
Hallo BruniM,

Leider kommt die Fehlermeldung immer noch! Können Sie mir das al Excel-Datei zukommen lassen ?


Besten Dank

Viele Grüße

BrunMi
23.07.2014, 10:57
Hallo aprillia,

Im Anhang findest du nochmal meine Beispieldatei.
Bei mir funktioniert das Makro dort einwandfrei..

LG
BrunMi