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

Mail.Attachments.Add ActiveSheet

Forumthread: Mail.Attachments.Add ActiveSheet

Mail.Attachments.Add ActiveSheet
05.03.2008 14:21:50
Werner
Hallo zusammen!
Gibt es nur diesen einen Befehl um Anhänge in eine Mail einzufügen?
Mail.Attachments.Add ThisWorkbook.FullName
Wenn ich Mail.Attachments.Add ActiveSheet eingebe kriege ich eine Fehlermeldung.
Ich möchte nur ein bestimmtes Tabellenblatt als Anhang verschicken.
An der Sicherheitsabfrage bin ich vorbei.

Sub MailVersenden()
Dim outl, Mail As Object
Dim i As Integer
Dim Nachricht
For i = 6 To 6 'Zeile 6
If Cells(i, 2) = "" Then GoTo ende
Set outl = CreateObject("Outlook.Application")
Set Mail = outl.CreateItem(0)
Mail.Subject = Cells(i, 2) & " " & Cells(8, 4) & Cells(12, 1) & " / " & Cells(14, 1) ' _
Betreffzeile
Mail.To = Cells(i, 2) 'Adresse
Mail.Attachments.Add ActiveSheet
Mail.Display
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.AppActivate Mail
Application.Wait (Now + TimeValue("0:00:02"))
WshShell.SendKeys ("%s")
Set Mail = Nothing
Set outl = Nothing
Set WshShell = Nothing
Application.Wait (Now + TimeValue("0:00:03"))
ende:
Next i
End Sub


Stört euch nicht an dieser nicht vorhandenen Wiederholungsroutine. Habe den Code aus einer anderen Datei kopiert und (zugegen bestimmt nicht clever) angepasst.
Wäre super, wenn es da was gäbe, um nur ein einzelnes Tabellenblatt als Anhang zu verschicken.
Gruß und DANKE!
Werner

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Mail.Attachments.Add ActiveSheet
05.03.2008 14:45:36
Werner
Danke für den Tip.
Mein Englisch ist allerdings sehr bescheiden und der Link übersteigt meine VBA-Kenntnisse doch um Einiges.
Gibt's keinen "einfachen" Befehl, um das aktive Arbeitsblatt als Anlage in die Mail einzufügen?
Gruß
Werner

AW: Mail.Attachments.Add ActiveSheet
05.03.2008 15:22:33
Case
Hallo,
nun dann schau Dich doch mal auf dieser Homepage etwas um. Ron hat auch ein fertiges Tool:
http://www.rondebruin.nl/mail/add-in.htm
Und nein - einfach mit einem Befehl geht das nicht.


Servus

Case


Anzeige
AW: Mail.Attachments.Add ActiveSheet
05.03.2008 15:35:00
Werner
Die AddInn's sind nicht schlecht, führen mich aber nicht zur Lösung meines Problems.
Es wird zwar ein einzelnes Tabellenblatt angehängt... aber die Mailadresse und Betreff muss ich "zu Fuß" eingeben.
Gruß
Werner

AW: Mail.Attachments.Add ActiveSheet
05.03.2008 15:50:00
Waven
Hallo Werner
Du kannst zuerst das gewünschte Blatt in ein neues Workbook kopieren.
ActiveSheet.Copy
und es dann irgendwo speichern
ActiveWorkbook.SaveAs Filename:="C:\test.xls"
und danach mit Mail.Attachments.Add ActiveWorkbook.FullName anhängen.
Nach dem verschicken kannst du die test.xls wieder schliessen und löschen.
Workbooks("test.xls").Close SaveChanges:=False
Kill "C:\test.xls"
Gruss
Waven

Anzeige
AW: Mail.Attachments.Add ActiveSheet
06.03.2008 07:41:09
Werner
Danke für eure Tipps.
Leider bringen sie mich der Lösung meines Problems nicht näher.
Da mehrere User auf meine Datei zugreifen ist das Abspeichern unter einem bestimmten Namen nicht möglich.
Zudem sind bei uns im Netzwerk die Pfade nicht für alle gleich.
Oder kann man Excel sagen, dass es die Datei
- an dem Ort speichern soll, an dem sich auch die Originaldatei befindet? Also den konkreten Pfad weglassen und sagen "speichere da, wo das Original liegt"?
- auf einen evtl. bereits vorhandenen Dateinamen prüfen und ggf. einen neuen Namen vergeben soll?
Gruß und Danke
Werner

Anzeige
AW: Mail.Attachments.Add ActiveSheet
06.03.2008 15:08:06
Waven
Hallo Werner
Also mit ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\test.xls" kannst du es unter dem selben Pfad abspeichern.
Im meinem Beispiel wird ja die Datei immer wieder gelöscht, also sollte sie nicht mehr vorhanden sein.
ach ja und löschen mit Kill ThisWorkbook.Path & "\test.xls"
Gruss
Waven
Anzeige
;
Anzeige

Infobox / Tutorial

Mail-Anhänge mit VBA: So fügst du ActiveSheet hinzu


Schritt-für-Schritt-Anleitung

Um ein bestimmtes Tabellenblatt als Anhang in einer E-Mail zu versenden, kannst du folgenden VBA-Code verwenden. Dieser Code kopiert das aktive Blatt in eine neue Arbeitsmappe, speichert es und fügt es als Anhang hinzu.

Sub MailVersenden()
    Dim outl, Mail As Object
    Dim i As Integer
    Dim Nachricht
    For i = 6 To 6 ' Zeile 6
        If Cells(i, 2) = "" Then GoTo ende
        Set outl = CreateObject("Outlook.Application")
        Set Mail = outl.CreateItem(0)
        Mail.Subject = Cells(i, 2) & " " & Cells(8, 4) & Cells(12, 1) & " / " & Cells(14, 1) ' Betreffzeile
        Mail.To = Cells(i, 2) ' Adresse

        ' Aktives Blatt in neues Workbook kopieren
        ThisWorkbook.ActiveSheet.Copy
        ' Speichern unter dem Originalpfad
        ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\temp.xls"
        ' Anhang hinzufügen
        Mail.Attachments.Add ActiveWorkbook.FullName

        Mail.Display
        ' Optional: Senden der E-Mail
        Dim WshShell
        Set WshShell = CreateObject("WScript.Shell")
        WshShell.AppActivate Mail
        Application.Wait (Now + TimeValue("0:00:02"))
        WshShell.SendKeys ("%s")

        ' Aufräumen
        Set Mail = Nothing
        Set outl = Nothing
        Set WshShell = Nothing
        Application.Wait (Now + TimeValue("0:00:03"))

        ' Temp-Datei schließen und löschen
        Workbooks("temp.xls").Close SaveChanges:=False
        Kill ThisWorkbook.Path & "\temp.xls"

ende:
    Next i
End Sub

Häufige Fehler und Lösungen

  1. Fehlermeldung bei Mail.Attachments.Add ActiveSheet
    Das liegt daran, dass du nicht das aktive Blatt direkt anhängen kannst. Verwende stattdessen den obigen Code, um das Blatt in eine temporäre Datei zu kopieren und diese als Anhang hinzuzufügen.

  2. Datei kann nicht gespeichert werden
    Stelle sicher, dass der angegebene Pfad, in dem du die Datei speichern möchtest, existiert. Verwende ThisWorkbook.Path, um die Datei im gleichen Verzeichnis wie die Originaldatei zu speichern.


Alternative Methoden

Eine alternative Methode, um Anhänge in eine E-Mail zu verschicken, besteht darin, ein Add-In von Ron de Bruin zu verwenden. Diese Tools bieten häufig eine benutzerfreundliche Oberfläche für den E-Mail-Versand und die Anhänge.


Praktische Beispiele

Hier sind einige praktische Anwendungsfälle für den obigen VBA-Code:

  • Versand von Berichten: Nutze den Code, um regelmäßig Berichte an dein Team zu senden.
  • Automatisierte Benachrichtigungen: Integriere den Code in ein Makro, das automatisch E-Mails basierend auf bestimmten Bedingungen versendet.

Tipps für Profis

  • E-Mail-Vorlagen verwenden: Du kannst E-Mail-Vorlagen erstellen, um den Versand zu automatisieren und konsistent zu gestalten.
  • Fehlerbehandlung einfügen: Verwende On Error Resume Next, um Fehler zu handhaben und unerwartete Abstürze zu vermeiden.
  • Schnelle Anpassungen: Wenn du oft das aktive Blatt versendest, denke daran, den Code zu parametrisieren, um das Zielblatt dynamisch auszuwählen.

FAQ: Häufige Fragen

1. Ist dieser Code mit jeder Excel-Version kompatibel?
Ja, der Code sollte in den meisten modernen Excel-Versionen (ab 2007) funktionieren, die VBA unterstützen.

2. Kann ich mehrere Blätter gleichzeitig versenden?
Ja, du kannst eine Schleife über die Blätter in deiner Arbeitsmappe einfügen und jedes Blatt nacheinander an die E-Mail anhängen.

3. Wie kann ich den E-Mail-Versand automatisieren?
Du kannst den Code in ein zeitgesteuertes Makro einfügen oder eine Schaltfläche in deiner Excel-Oberfläche erstellen, um das Senden der E-Mail zu triggern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige