Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1192to1196
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

Mails mit Beilage versenden

Mails mit Beilage versenden
Markus
Hallo,
das folgende Makro funktioniert fast!
Bloss bei der Zeile Attachments bockt Excel.
Ich habe alles versucht, auch beim googlen bin ich nicht weiter gekommen.
Danke Für Hilfe
Markus
Sub Excel_Serienmail_via_Outlook_Senden()
Dim OutApp As Object, Mail As Object
Dim i As Integer
Dim Nachricht
For i = 1 To 10
'Variablen müssen bei jeder Schleife neu initalisiert werden
Set OutApp = CreateObject("Outlook.Application")
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
.To = Cells(i, 1) 'Adresse
.Subject = Cells(i, 2) 'Betreffzeile
.Body = Cells(i, 3) 'Sendetext
.Attachments = Cells(i, 4)  'Anhanng
'Hier wird die Mail gleich in den Postausgang gelegt
'und die Sicherheitsabfrage muss jedesmall bestätigt werden
.Send
'Hier wird die Mail "angezeigt"
'aber gleich versendet,... OHNE Sicherheitsabrage
.Display
SendKeys "%s", True
End With
'Variablen zurücksetzen sonst geht es nicht
Set OutApp = Nothing 'CreateObject("Outlook.Application")
Set Nachricht = Nothing 'OutApp.CreateItem(0)
Application.Wait (Now + TimeValue("0:00:05"))
Next i
End Sub

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Mails mit Beilage versenden
14.01.2011 08:38:06
Kawensmann
Hallo,
versuch's mal so:
.Attachments.Add = Cells(i, 4)  'Anhanng
wobei ich davon ausgehe, dass in Cells(i,4) jeweils ein gültiger Pfad- und Dateiname steht.
Gruß
Kawensmann
AW: Mails mit Beilage versenden
14.01.2011 08:40:06
Markus
Hallo Kawesmann,
das habe ich auch schon versucht.
Geht nicht
Markus
war auch Blödsinn ...
14.01.2011 08:42:48
Kawensmann
so sollte es gehen:
.Attachments.Add Cells(i, 4).Value   'Anhanng

AW: war auch Blödsinn ...
14.01.2011 08:47:37
Markus
Hallo Kawensmann,
danke bestens.
Jetzt habe noch das Problem, das beim senden immer noch die Frage kommt,
ob ich senden will.
Aber das werde ich bestimmt hinkriegen.
Markus
Anzeige
AW: war auch Blödsinn ...
14.01.2011 09:26:18
Holger,
Geht es nicht mit

Application.DisplayAlerts = False
?
AW: war auch Blödsinn ...
14.01.2011 09:42:07
mumpel
Hallo!
Nein, das geht damit nicht. Zum Senden ohne Sicherheitsmeldung gibt es zwei Möglichkeiten. Entweder die "Redemption" nutzen, oder Mail zuerst anzeigen lassen (.display) und dann mit SendKeys die Mail senden. Für "SendKeys" findet man im Archiv jede Menge Beispiele.
Gruß, René
AW: war auch Blödsinn ...
14.01.2011 09:48:27
Markus
Hallo René,
leider habe ich nichts schlaues gefunden über Redemption.
Aber, ..
1. ich kann nicht verstehen, warum dieses lästige Outlook diese Frage immer stellt
2. Kann man wenigstens alle Mails so vorbereiten dass diese in den Postausgang oder in die Entwürfe gelegt werden.
Gruss
Markus
Anzeige
probier mal so.
14.01.2011 10:09:38
Beffen
Hallo.
also zu 1. Outlook stellt damit sicher, dass keine automatisch generierten Mails versendet werden. Sei es als Spam oder zur Verbreitung von schädlichen Programmen. Hatte das Problem auch des Öfteren.
zu 2. Es geht, Mails zu versenden. Ich weiss nun nicht, ob bei deinem Office zwei Fehlermeldungen angezeigt werden. Bei mir zumindest war es. es gibt einen recht umfangreichen Code wenigstens eine Meldung zu umgehen. hat bei mir ohne Probleme funktioniert.
probier mal sowas:
Option Explicit
Sub Send_Excel_Message()
Dim MyMessage As Object, MyOutApp As Object
Dim SafeMailItem As Object
'InitializeOutlook = True
Set MyOutApp = CreateObject("Outlook.Application")
'Nachrichtenobject erstellen
Set MyMessage = MyOutApp.CreateItem(0)
Set SafeMailItem = CreateObject("Redemption.SafeMailItem")
SafeMailItem.Item = MyMessage
With SafeMailItem
.To = "me@home.de"
.Subject = "Testmeldung von Excel2000 " & Date & Time
'Hier wird eine normale Text Mail erstellt
'.body = "Das ist ein Test" & vbCrLf & "Bitte ignorieren"
'Hier wird die HTML Mail erstellt
.HTMLBody = "Das ist ein Test" & vbCrLf & "Bitte ignorieren."
' Mail senden
.Send
End With
' MyOutApp.Quit
Set SafeMailItem = Nothing
Set MyMessage = Nothing
Set MyOutApp = Nothing
End Sub

und hast du unter Extras -> Verweise -> die Microsoft Outlook x.x Object Library angehakt?
Grüße Beffen
Anzeige
Hm, bei mir geht das:
14.01.2011 10:01:50
Holger,
Hi Rene,
also bei mir geht das ohne Redemption mit .Send?
Die E-Mails werden ohne Nachfrage gesendet.
Sub SendEmail()
Dim OutApp As Object
Dim OutMail As Object
Dim strBody As String
Dim strAddress As String
Dim strcc As String
Dim strSubject As String
Dim SigString As String
Dim Signature As String
Dim strDate As String
On Error Resume Next
Set OutApp = GetObject(, "Outlook.Application")
If OutApp Is Nothing Then
Set OutApp = CreateObject("Outlook.Application")
End If
On Error GoTo 0
If OutApp Is Nothing Then
MsgBox "Outlook ist nicht installiert, kein E-Mail Versand möglich", vbOKOnly +  _
vbExclamation, "Achtung"
Exit Sub
End If
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(olMailItem) 'früher: 'Set OutMail = OutApp.CreateItem(0)
Set MyAttachments = OutMail.Attachments
'    MyAttachments.Add strDateinameInStore
'    MyAttachments.Add strDateinameData
cpwMaster.Activate
strDate = CDate(Format(Now, "DD.MM.YYYY hh:mm"))
strBody = "*****************************************"
strAddress = Range("E4").Value
strcc = Range("F4").Value
strSubject = "files " & strcurPer & " " & strDate
SigString = "C:\Standard.txt"
If Dir(SigString)  "" Then
Signature = GetBoiler(SigString)
Else
Signature = ""
End If
On Error Resume Next
With OutMail
.To = strAddress
.CC = strcc
.BCC = ""
.Subject = strSubject
.Body = strBody & vbNewLine & vbNewLine & Signature
'.Attachments.Add (strDateinameInStore)
.Send   'or use .send
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Function GetBoiler(ByVal sFile As String) As String
Dim fso As Object
Dim ts As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.GetFile(sFile).OpenAsTextStream(1, -2)
GetBoiler = ts.readall
ts.Close
End Function

Anzeige
und bist Du nicht willig, so brauch ich Gewalt
14.01.2011 10:12:49
Markus
Hallo Excel-Spezis,
unsere Informatik-Abteilung, bzw. unser Exchange-Server hat etwas dagegen,
dass "Massenmails" so versendet werden.
Aber wie gesagt: "und bist Du nicht w..................
.send weglassen, und mit SendKey versenden.
Gut bei 300 Dateien, die ich so versenden muss, ca 30 Minuten Zeitaufwand.
Aber es geht und das ist wichtig.
Danke Euch allen
Markus
Folgendes funktioniert bei mir:
Sub Excel_Serienmail_via_Outlook_Senden()
Dim OutApp As Object, Mail As Object
Dim i As Integer
Dim Nachricht
For i = 1 To 3
'Variablen müssen bei jeder Schleife neu initalisiert werden
Set OutApp = CreateObject("Outlook.Application")
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
.To = Cells(i, 1) 'Adresse
.Subject = Cells(i, 2) 'Betreffzeile
.Body = Cells(i, 3) 'Sendetext
.Attachments.Add Cells(i, 4).Value
' Mail anzeigen und mit "SendKey" versenden
' bis das Mail gesendet ist, 5 Sekunden warten
.display
Application.Wait (Now + TimeValue("0:00:05"))
' mit SendKeys wird ein ALT+S ( für Senden " an Outlook geschickt
SendKeys "%s", True
End With
'Variablen zurücksetzen sonst geht es nicht
Set OutApp = Nothing 'CreateObject("Outlook.Application")
Set Nachricht = Nothing 'OutApp.CreateItem(0)
Next i
End Sub

Anzeige
AW: Hm, bei mir geht das:
14.01.2011 10:44:44
mumpel

Die E-Mails werden ohne Nachfrage gesendet.
Du hast ja auch Outlook 2007 oder höher!? Dort ist standardmäßig so eingestellt, das bei aktuellem Antivirenprogramm aus VBA heraus ohne Meldung gesendet werden kann. Aus anderen "nicht Microsoftprogrammen" erscheint die Meldung (bei mir) trotzdem.
AW: Hm, bei mir geht das:
14.01.2011 11:48:16
Holger,
Ahh, wieder was gelernt.
Danke sehr.

110 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige