Makro - File benennen und versenden

Hallo Leute

Möchte ein Excel file umbenennen und anschliessend verschicken.

Komme wahrscheinlich nicht darumherum das File mit neuen Namen abzuspeichern und dann per Application.Dialogs(xlDialogSendMail).Show zu verschicken.

Mein Knoten: Wie kann ich das gespeicherte File verschicken ? Da funktioniert Application.Dialogs(xlDialogSendMail).Show nicht mehr !!

über Ideen wäre ich dankbar.

Gruss
Flexo

Hi,

ja, umbenennen wirst du die Datei wohl selbst müssen, sollte aber kein Problem sein.

Vermutlich möchtest du die Datei mit Outlook verschicken. Zwar weiß ich nicht genau, wie das mit Outlook funktioniert, aber ich kann dir sagen wie ich vorgehen würde.

Als erstes kümmerst du dich darum, wie man per VBA in Outlook eine Mail mit Dateianhang verschickt. Google fragen oder mal hier im Outlook-Forum nachfragen.

Wenn du das soweit hast, kannst du das Ganze nach Excel übernehmen. Du musst dann Outlook-Ressoucen über die Verweise in das Excel-VBA einbinden. Danach kannst du die Outlook-Objekte auch in Excel-VBA nutzen. Sowas hab ich mal für den Versand mit Lotus-Notes gemacht und das hat wider Erwarten funktioniert. Wenn du innerhalb des MS-Officepakets bleibst solle es also auch klappen…

Hi power_blue

ja, umbenennen wirst du die Datei wohl selbst müssen, sollte
aber kein Problem sein.

Stimmt, temporär speichern, verschicken und dann löschen

Sowas hab ich mal
für den Versand mit Lotus-Notes gemacht und das hat wider
Erwarten funktioniert.

Ich arbeite auch mit Lotus.

Das mit dem verschicken Absender, Subject etc. ist kein Problem. Die Frage war nur… wie ich mir das umbenannte Excelfile packe und verschicke.

was ist return_receipt inDialogs(xlDialogSendMail)
Hallo Flexo,

ja, umbenennen wirst du die Datei wohl selbst müssen, sollte
aber kein Problem sein.

Stimmt, temporär speichern, verschicken und dann löschen

das geht doch alles von Excel aus, wie du willst ohne die mappe zu öffnen oder mit.
Aber Wenn schon denn schon, irgendwie scheint mir da
Dialogs(xlDialogSendMail)
ungeeignet, denn du kannst nur Empfängeradresse und den Betreff vorab festlegen, keinen Mailanhang.

Deshalb mein neuer Betreff, was zum Henker ist dieses „return_receipt“?

Mein Minimalenglisch ließ mich an Antwortmailadresse denken, aber nix, es wird 0 und 1 akzeptiert, da dachte ich an Lesebestätigung oder so, aber nix.
Andere Zahlen habe ich noch nicht getestet.
Kann jemand erahnen für was das dient? Danke

Achja, da war doch noch dein Problem :smile:)
Schau mal in die FAQ. Ganz unten ist eine FAQ die ich anregte.
Damit löste das sicher.

Nachstehend Code auf den ich mich beziehe bei meiner Nachfrage.

Gruß
Reinhard

Sub nn()
'recipients, subject, return\_receipt
Dim Mailadresse As String, Betreff As String, MM
MM = 0
Mailadresse = "[email protected]"
Betreff = "Neue datei"
Application.Dialogs(xlDialogSendMail).Show Mailadresse, Betreff, MM
End Sub

Hi Reinhard

Danke, super FAQ.

Werde mich mal in das Thema reinlesen.

Zu Deiner Frage:

Return_Receipt
Du hast schon recht, Abfrage ob Lesebestätigung angefordert werden soll. Der Standardwert ist false = keine Lesebestätigung.

Gruss Flexo

Hallo Flexo,

Danke, super FAQ.

ja, zum Emailen aus Excel heraus läßt die keinen Wunsch offen.
Natürlich nicht bei mir, bin so :smile:
Ich habe jetzt nicht aktuell geschaut. Aber vor jahren wollte ich mal aus Excel heraus mailen. Da gabs schon viele Codes im Internet, aber alle beruhten auf Outlook als Mailprogramm.

Das wollte ich aber gar nicht, ich wollte mit meinem Mailprogramm mailen.
Nach einiger Suche fand ich dann sogar entsprechenden Code, wo man zwar nicht das Mailprogramm auswählen konnte aber immerhin, der Code mailte über das eingestellte Standardmailprogramm.

Also genau das was ich suchte.
Leider habe ich diesen genialen Code nicht mehr :frowning:

Return_Receipt
Du hast schon recht, Abfrage ob Lesebestätigung angefordert
werden soll. Der Standardwert ist false = keine
Lesebestätigung.

Aha, danke für die Bestätigung meiner Ahnung.

Gruß
Flexo

Die FAQ ist super.

Hier der zusammengekürzte Code, läuft einwandfrei.

Sub Mail\_Workbook()
 Dim wb1 As Workbook
 Dim wb2 As Workbook
 Dim TempFilePath As String
 Dim TempFileName As String

 Set wb1 = ActiveWorkbook

 TempFilePath = "C:\data\" 'gewünschter Pfad
 TempFileName = "Dateiname" 'gewünschter Name

 wb1.SaveCopyAs TempFilePath & TempFileName
 Set wb2 = Workbooks.Open(TempFilePath & TempFileName)

 wb2.SendMail "Mailadresse", "Subject"
 wb2.Close SaveChanges:=False

 Kill TempFilePath & TempFileName

End Sub

Beispiel-Code
So,

ich hab noch mal nachgesucht. Kann nicht meinen kompletten Code schicken, aber hier hab ich mal schnell was zusammenkopiert.

Mit Notes 7 läuft es, hab ich grad getestet. Notes muss aber schon offen sein und es mus jemand angemeldet sein.

Hoffe, du kommst damit klar:

Sub test()
Dim Maildb As Object 'Maildatenbank
Dim UserName As String 'userName
Dim MailDbName As String 'Maildatenbank
Dim MailDoc As Object 'Mail-Dokument
Dim AttachME As Object
Dim Session As Object 'notes session
Dim EmbedObj As Object 'embedded object

recipient = „[email protected]“ 'adresse wo das Ganze hin soll
Attachment = „d:\test.pdf“

'notes-session starten
Set Session = CreateObject(„Notes.NotesSession“)

UserName = Session.UserName
MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & „.nsf“

'mail-datenbank öffnen
Set Maildb = Session.GETDATABASE("", MailDbName)
If Maildb.ISOPEN = True Then
'ist schon offen
Else
Maildb.OPENMAIL
End If

'betreff und mailtext festlegen

bodytext = „Inhalt der Mail“
subject = „Betreff der Mail“

'Mail-Dokument erstellen
Set MailDoc = Maildb.CREATEDOCUMENT
MailDoc.Form = „Memo“
MailDoc.sendto = recipient
MailDoc.subject = subject
MailDoc.Body = bodytext
MailDoc.SAVEMESSAGEONSEND = 1 '1=Kopie im Postausgang ablegen

'Attachment anhängen
If Attachment „“ Then
Set AttachME = MailDoc.CREATERICHTEXTITEM(„Attachment“)
Set EmbedObj = AttachME.EMBEDOBJECT(1454, „“, Attachment, „Attachment“)
'MailDoc.CREATERICHTEXTITEM („Attachment“)
End If

'Und weg damit
MailDoc.PostedDate = Now()
MailDoc.Send 0, recipient

'Aufräumen
Set Maildb = Nothing
Set MailDoc = Nothing
Set AttachME = Nothing
Set Session = Nothing
Set EmbedObj = Nothing
End Sub