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

Forumthread: Tabellenblatt per Mail versenden.

Tabellenblatt per Mail versenden.
Lisa
Hallo zusammen, ich habe ein Problem, zu dem ich nicht weiterkomme und auf eure Hilfe hoffe!
Es gibt zu diesem Thema schon Beiträge, die mir aber nicht weitergeholfen haben.
Mittels des Begfügten Makros kann ich meine Exceldatei problemlos als Emailanhang versenden!
Nun möchte ich hierzu aber nicht die ganze Datei (Workbook) sondern nur eine Tabelle Sheets(1)versenden.
Ich weiß leider nicht was ich hier umstellen muss und wäre für eine Hilfestellung sehr dankbar!
Private Sub CommandButton1_Click()
Dim Nachricht As Object, OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
Dim AWS As String
AWS = Environ("USERPROFILE") & "\" & ThisWorkbook.Name
ThisWorkbook.SaveCopyAs AWS
Application.Visible = True
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
.To = "@.de"
.Cc = ""
.Subject = "Bitte ergänzen " & Date & Time
.Attachments.Add AWS
.Body = "Anbei Daten" & vbCrLf & ""
.Display
End With
Set OutApp = Nothing
Set Nachricht = Nothing
End Sub

LG Lisa
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Tabellenblatt per Mail versenden.
21.11.2011 16:01:34
Rudi
Hallo,
versuch's mal so:
Private Sub CommandButton1_Click()
Dim Nachricht As Object, OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
Dim AWS As String
AWS = Environ("USERPROFILE") & "\" & ThisWorkbook.Name
Sheets(1).Copy  'Blatt anpassen
With ActiveWorkbook
.SaveAs AWS
.Close
End With
Application.Visible = True
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
.To = "@.de"
.Cc = ""
.Subject = "Bitte ergänzen " & Date & Time
.Attachments.Add AWS
.Body = "Anbei Daten" & vbCrLf & ""
.Display
End With
Set OutApp = Nothing
Set Nachricht = Nothing
End Sub

Gruß
Rudi
Anzeige
AW: Tabellenblatt per Mail versenden.
21.11.2011 17:05:31
Lisa
Hallo Rudi, danke für dein schnelle Antwort!
Ich bekomme zum einem die Ansage, diese Datei existiert bereits an diesem Paltz soll sie überschrieben werden?
wird das verneint, dann gibt es den Laufzeitfehler 1004, Die Methode save as ist fehlgeschlaegn.
bejat ma sie, dann kommt der Laufzeitfehler 1004, mit "kann die Datei nicht unter dem Namen einerbereits geöffneten Datei speichern!"
Bis zum Outlook komme ich erst garnicht!
Nun habe ich etwas rumexperimentiert:
Private Sub CommandButton1_Click()
ActiveWorkbook.ActiveSheet.Copy
ActiveWorkbook.SaveAs "Tabelle1" & ".xls"
AWS = ActiveWorkbook.FullName
Dim Nachricht As Object, OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
AWS = Environ("USERPROFILE") & "\" & ThisWorkbook.Name
Application.Visible = True
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
.To = "@.de"
.CC = ""
.Subject = "Bitte ergänzen " & Date & Time
.Attachments.Add AWS
.Body = "Anbei Daten" & vbCrLf & ""
.Display
End With
Set OutApp = Nothing
Set Nachricht = Nothing
End Sub
hier wird nun aber abgefragt, ob die Datei gespeichert werden soll! bejat man dies, dann ist sie wie gewünscht im Mailanhang! verneint man es gibt es auch hier einen debugger!
Eigentlich ist die Abfrage zum speichern doch überflüssig, da sie ja zwischengespeichert und nach dem senden wieder gelöscht werden soll!
Wie bekomme ich die Abfrage weg?
LG Lisa
Anzeige
AW: Tabellenblatt per Mail versenden.
21.11.2011 17:56:21
Rudi
Hallo,
neuer Anlauf.
Private Sub CommandButton1_Click()
Dim Nachricht As Object, OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
Dim AWS As String, wksMail As Worksheet
Set wksMail = Sheets(1) 'zu versendendes Blatt
AWS = Environ("USERPROFILE") & "\" & wksMail.Name & ".xls"
'temporäre Mappe erstellen
wksMail.Copy
With ActiveWorkbook
.SaveAs AWS
.Close
End With
Application.Visible = True
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
.To = "@.de"
.Cc = ""
.Subject = "Bitte ergänzen " & Date & Time
.Attachments.Add AWS
.Body = "Anbei Daten" & vbCrLf & ""
.Display
End With
Set OutApp = Nothing
Set Nachricht = Nothing
Kill AWS 'temporäre Mappe löschen
End Sub

Gruß
Rudi
Anzeige
AW: danke, es funktioniert super!:)
22.11.2011 07:43:09
Lisa
genauso funktioniert es. ich danke die für deine Hilfe!
LG Lisa
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel Tabellenblatt per Mail versenden


Schritt-für-Schritt-Anleitung

Um ein einzelnes Tabellenblatt aus Excel per Mail zu versenden, kannst Du das folgende VBA-Makro verwenden. Stelle sicher, dass Du Excel 2016 oder eine neuere Version nutzt.

  1. Öffne Excel und erstelle ein neues Modul im VBA-Editor (drücke ALT + F11).
  2. Füge den folgenden Code in das Modul ein:
Private Sub CommandButton1_Click()
    Dim Nachricht As Object, OutApp As Object
    Set OutApp = CreateObject("Outlook.Application")
    Dim AWS As String, wksMail As Worksheet
    Set wksMail = Sheets(1) 'zu versendendes Blatt
    AWS = Environ("USERPROFILE") & "\" & wksMail.Name & ".xls"

    'temporäre Mappe erstellen
    wksMail.Copy
    With ActiveWorkbook
        .SaveAs AWS
        .Close
    End With

    Application.Visible = True
    Set Nachricht = OutApp.CreateItem(0)
    With Nachricht
        .To = "@.de"
        .Cc = ""
        .Subject = "Bitte ergänzen " & Date & Time
        .Attachments.Add AWS
        .Body = "Anbei Daten" & vbCrLf & ""
        .Display
    End With

    Set OutApp = Nothing
    Set Nachricht = Nothing
    Kill AWS 'temporäre Mappe löschen
End Sub
  1. Passe die E-Mail-Adresse im Code an.
  2. Führe das Makro aus, um das Tabellenblatt zu versenden.

Häufige Fehler und Lösungen

  • Fehler: Die Datei existiert bereits
    Wenn Du die Meldung erhältst, dass die Datei bereits existiert, stelle sicher, dass der Dateiname einzigartig ist. Du kannst z. B. das Datum oder die Uhrzeit in den Dateinamen einfügen.

  • Laufzeitfehler 1004
    Dieser Fehler tritt auf, wenn die Datei nicht gespeichert werden kann. Achte darauf, dass die Datei nicht bereits geöffnet ist und dass Du die richtigen Berechtigungen zum Speichern hast.

  • Abfrage zum Speichern der Datei
    Um die Abfrage zu vermeiden, kannst Du den Dateispeicherort in den Code integrieren, sodass die Datei automatisch überschrieben wird.


Alternative Methoden

Du kannst auch die folgenden Methoden verwenden:

  1. Excel Tabelle als E-Mail versenden
    Statt das Tabellenblatt als Anhang zu versenden, kannst Du den Inhalt direkt in die E-Mail einfügen. Hierfür musst Du die .HTMLBody-Eigenschaft anpassen.

  2. Einzelnes Excel Blatt versenden
    Wenn Du nur ein Blatt versenden möchtest, kannst Du das Blatt in eine neue Arbeitsmappe kopieren und diese dann per E-Mail versenden.


Praktische Beispiele

Hier sind einige praktische Beispiele für das Versenden von Tabellenblättern:

  • Einzelnes Tabellenblatt per Mail versenden
    Verwende das obige Makro, um das erste Blatt in der Arbeitsmappe zu versenden.

  • Mehrere Blätter versenden
    Du kannst auch mehrere Blätter in einer neuen Arbeitsmappe kopieren und diese dann als Anhang versenden.


Tipps für Profis

  • Automatisierung: Automatisiere den Versand von Tabellenblättern mit einem Timer, sodass z. B. wöchentliche Berichte automatisch versendet werden.
  • Fehlerbehandlung: Integriere Fehlerbehandlungsroutinen in Dein Makro, um unerwartete Probleme elegant zu lösen.
  • Benutzerdefinierte E-Mail-Vorlagen: Erstelle Vorlagen für häufige E-Mail-Nachrichten, um den Prozess weiter zu optimieren.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Tabellenblätter aus Excel versenden?
Du kannst mehrere Blätter kopieren und in einer neuen Arbeitsmappe speichern, die dann versendet wird.

2. Funktioniert das Makro auch auf einem Mac?
Das obige Makro ist für Windows und Outlook optimiert. Für Mac musst Du eventuell Anpassungen vornehmen, insbesondere in Bezug auf die E-Mail-Integration.

3. Kann ich das Makro anpassen, um andere Dateiformate zu verwenden?
Ja, Du kannst die .SaveAs-Methode anpassen, um andere Formate wie .xlsx oder .pdf zu verwenden.

4. Was mache ich, wenn ich keinen Zugriff auf Outlook habe?
In diesem Fall kannst Du alternative E-Mail-Clients verwenden, indem Du die entsprechenden Objekte in VBA anpasst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige