Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: E-MAil verschicken mit geänderte Dateinamen

E-MAil verschicken mit geänderte Dateinamen
14.12.2007 11:46:00
Patric
Hallo Profis
ich habe von meinem Chef den Auftrag bekommen, eine Excel Sheet so umzubauen das jeder in der Firma es mit einem Knopfdruck an eine vorgegebene E-Mail schicken kann. Wenn möglich mit so wenig zusätzlichen klicks.
Zum verschicken einer Arbeitsmappe gibts ja jede Menge verschiedene Bespiele. Z.B
Option Explicit

Sub Excel_Workbook_via_Outlook_Senden()
Dim MyMessage As Object, MyOutApp As Object
Dim Qe As Integer
Dim AWS As String
'Aktive Arbeitsmappe wird als mail gesendet
'Übergabe des Mappennames an die Variable
AWS = ThisWorkbook.FullName
'Outlook Object erstellen
Set MyOutApp = CreateObject("Outlook.Application")
'Outlook Nachricht erstellen
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
'Empfänger
.To = "irgendwer@provider"
'Betreff
.Subject = "Spesenabrechnung " & Date & Time
.Attachments.Add AWS
'Hier wird ein normaler Text erstellt
.Body = "Mail für normalen Textempfang"
.Display
'Hier wird die Mail gleich in den Postausgang gelegt und gesendet
'.Send
End With
'Variablen leeren
Set MyOutApp = Nothing
Set MyMessage = Nothing
End Sub


Folgende Probleme habe ich leider noch:
- wie kann ich den Name des Files welches per Mail verschickt wird ändern? Er sollte so heissen: Spesenabrechnung_"Zelle A13"_&Data
&Time.xls in der Zelle A13 befindet sich der Name das Users.
- Wie kann ich es machen das Outlook das Mail direkt verschickt, ohne die Meldung anzuzeigen das ein externes Programm etwas automatisch verschicken will?
Danke für eure Hilfe
Patric

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: E-MAil verschicken mit geänderte Dateinamen
14.12.2007 12:52:42
Rudi
Hallo,

- wie kann ich den Name des Files welches per Mail verschickt wird ändern? Er sollte so heissen: _
Spesenabrechnung_"Zelle A13"_&Data
&Time.xls in der Zelle A13 befindet sich der Name das Users.


speichere eine Kopie des Workbooks
AWS=thisworkbook.path &"/Spesenabrechnung_ &A13 &format(now,"_DDMMYYYYhhmmss.xls"
Thisworkbook.SaveCopyAs AWS


- Wie kann ich es machen das Outlook das Mail direkt verschickt, ohne die Meldung anzuzeigen das ein externes Programm etwas automatisch verschicken will?


Indem du Outlook nicht benutzt.
http://www.rondebruin.nl/cdo.htm
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: E-MAil verschicken mit geänderte Dateinamen
14.12.2007 13:28:00
Patric

- wie kann ich den Name des Files welches per Mail verschickt wird ändern? Er sollte so heissen: _
_
Spesenabrechnung_"Zelle A13"_&Data
&Time.xls in der Zelle A13 befindet sich der Name das Users.
speichere eine Kopie des Workbooks
AWS=thisworkbook.path &"/Spesenabrechnung_ &A13 &format(now,"_DDMMYYYYhhmmss.xls"
Thisworkbook.SaveCopyAs AWS


danke für die schnelle Antwort. Wie kann ich das File dann nach dem Sende automatisch wieder löschen? Es ist ja geöffnet und wenn ich es zuerst schliesse läuft das Makro nicht mehr.

Anzeige
AW: E-MAil verschicken mit geänderte Dateinamen
14.12.2007 14:11:00
Rudi
Hallo,

Es ist ja geöffnet 


Ist es nicht. Du hast eine Kopie der geöffneten Datei gespeichert.
Die Kopie kannst du mit


Kill AWS

löschen.
Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: E-MAil verschicken mit geänderte Dateinamen
14.12.2007 16:07:22
Patric
das funktioniert so wunderbar, danke
noch eine kleine letzte Frage.
- Die temp. Datei wird jetzt dort gespeichert wo sich auch die Original Datei befindet.. WO und wie kann ich den Pfad für die Datei angeben?

AW: E-MAil verschicken mit geänderte Dateinamen
14.12.2007 21:34:00
Rudi
Hallo,

WO und wie kann ich den Pfad für die Datei angeben?


Ersetze ThisWorkbook.Path durch deine Pfadangabe.
Gruß
Rudi
Eine Kuh mach muh, viele Kühe machen Mühe.

Anzeige
AW: E-MAil verschicken mit geänderte Dateinamen
17.12.2007 08:06:50
Patric
wenn ich einen bestimmten Pfad eingebe läuft das wunderbar, aber nicht wenn ich mit Umgebungsvariablen arbeiten. Wie %temp% oder %Userprofile%.
Wie kann ich die benutzen?
Gruss und Dank

AW: E-MAil verschicken mit geänderte Dateinamen
17.12.2007 08:11:00
Patric
habs selbst rausgefunden: Environ("Temp")
Gruss Patric
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel-Datei per Mail versenden mit geänderten Dateinamen


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei per Mail zu versenden und gleichzeitig den Dateinamen zu ändern, kannst du das folgende VBA-Skript verwenden:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeinWorkbookName)", dann „Einfügen“ > „Modul“.
  3. Kopiere und füge den folgenden Code ein:
Sub Excel_Workbook_via_Outlook_Senden()
    Dim MyMessage As Object, MyOutApp As Object
    Dim AWS As String
    Dim UserName As String

    ' Den Namen des Users aus Zelle A13 holen
    UserName = ThisWorkbook.Sheets(1).Range("A13").Value
    ' Aktive Arbeitsmappe wird als Mail gesendet
    AWS = ThisWorkbook.Path & "\Spesenabrechnung_" & UserName & "_" & Format(Now, "DDMMYYYYhhmmss") & ".xls"

    ' Kopie des Workbooks speichern
    ThisWorkbook.SaveCopyAs AWS

    ' Outlook Objekt erstellen
    Set MyOutApp = CreateObject("Outlook.Application")
    ' Outlook Nachricht erstellen
    Set MyMessage = MyOutApp.CreateItem(0)

    With MyMessage
        .To = "irgendwer@provider"
        .Subject = "Spesenabrechnung " & Date & " " & Time
        .Attachments.Add AWS
        .Body = "Mail für normalen Textempfang"
        .Send ' Direkt senden, ohne die Nachricht vorher anzuzeigen
    End With

    ' Temporäre Datei löschen
    Kill AWS

    ' Variablen leeren
    Set MyOutApp = Nothing
    Set MyMessage = Nothing
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Führe das Makro aus, um die Excel-Datei per Mail zu versenden.

Häufige Fehler und Lösungen

  • Problem: Der Dateiname wird nicht wie gewünscht geändert.

    • Lösung: Stelle sicher, dass die Zelle A13 den korrekten Usernamen enthält. Der Code verwendet Range("A13").Value, um den Namen zu lesen.
  • Problem: Outlook zeigt eine Sicherheitswarnung an.

    • Lösung: Um diese Warnung zu umgehen, kannst du den Code so anpassen, dass er das CDO (Collaboration Data Objects) verwendet. Informationen dazu findest du hier.
  • Problem: Die temporäre Datei wird nicht gelöscht.

    • Lösung: Stelle sicher, dass der Pfad korrekt ist und die Datei nicht geöffnet ist, wenn du Kill AWS ausführst.

Alternative Methoden

Eine Möglichkeit, eine Excel-Datei per Mail zu versenden, ohne Outlook zu verwenden, ist die Verwendung von SMTP-Protokollen oder CDO. Diese Methode erfordert jedoch zusätzliche Einstellungen und Kenntnisse über Serverinformationen.


Praktische Beispiele

  1. E-Mail mit angehängtem Bericht: Verwende das oben gegebene Skript und passe den Betreff und den Body der Nachricht an, um spezifische Informationen über den Bericht bereitzustellen.

  2. Versenden an mehrere Empfänger: Erweitere das .To-Feld, indem du mehrere E-Mail-Adressen durch Semikolons trennst:

    .To = "adresse1@provider; adresse2@provider"

Tipps für Profis

  • Verwende Environ("Temp"), um temporäre Dateien im Temp-Ordner des Systems zu speichern.
  • Teste dein Skript in einer sicheren Umgebung, bevor du es in einer Produktionsumgebung verwendest, um sicherzustellen, dass alles wie gewünscht funktioniert.

FAQ: Häufige Fragen

1. Wie kann ich den Pfad für die Datei angeben?
Ersetze ThisWorkbook.Path im Skript durch den gewünschten Pfad, z. B. C:\DeinPfad\.

2. Wie kann ich das Makro automatisch ausführen?
Du kannst das Makro an ein Ereignis binden, wie z. B. das Öffnen der Datei oder das Klicken auf einen Button in der Excel-Oberfläche.

3. Kann ich das Skript in anderen Excel-Versionen verwenden?
Ja, das Skript sollte in den meisten modernen Excel-Versionen funktionieren, solange VBA unterstützt wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige