Supportnet / Forum / Tabellenkalkulation
E-mail mit Excel verschicken
Frage
Hallo!
Ich habe eine Excel-Tabelle, in der sich Verknüpfungen zu anderen Dateien, Formeln und Makros befinden. Nun verschicke ich die Datei per E-mail.
Der Empfänger soll mit Hilfe eines Buttons das Tabellenblatt direkt wieder zu mir zurück schicken ohne viel zu machen außer auf den Button zu drücken.
Kennt jemand eine Möglichkeit das Tabellenblatt zu verschicken, in dem man auf einen entsprechenden Button klickt.
Bzw. kann mir jemand einen Beispiel VBA Code zeigen?
Grüße
Sebastian
Antwort 1 von fedjo
Hallo Sebastian,
Code in ein Modul einfügen, E-Mail Adresse ändern und einen Button in der Tabelle erzeugen.
Gruß
fedjo
Option Explicit
Sub Mappe_versenden_als_EMail()
Dim objOL As Object
Dim objMail As Object
Dim Bezeichnung As String
Dim MAdr As String
Set objOL = CreateObject("Outlook.Application")
Set objMail = objOL.CreateItem(0)
Bezeichnung = ActiveWorkbook.Name
MAdr = "@freenet.de" 'Deine E-Mail Adresse
Application.ScreenUpdating = False
With objMail
.To = MAdr
.Subject = Bezeichnung
.Body = "Hallo Kollege"
.Attachments.Add ActiveWorkbook.FullName
.Send
End With
MsgBox ("Tabelle wurde erfolgreich versendet.")
Application.ScreenUpdating = True
End Sub
Code in ein Modul einfügen, E-Mail Adresse ändern und einen Button in der Tabelle erzeugen.
Gruß
fedjo
Option Explicit
Sub Mappe_versenden_als_EMail()
Dim objOL As Object
Dim objMail As Object
Dim Bezeichnung As String
Dim MAdr As String
Set objOL = CreateObject("Outlook.Application")
Set objMail = objOL.CreateItem(0)
Bezeichnung = ActiveWorkbook.Name
MAdr = "@freenet.de" 'Deine E-Mail Adresse
Application.ScreenUpdating = False
With objMail
.To = MAdr
.Subject = Bezeichnung
.Body = "Hallo Kollege"
.Attachments.Add ActiveWorkbook.FullName
.Send
End With
MsgBox ("Tabelle wurde erfolgreich versendet.")
Application.ScreenUpdating = True
End Sub
Antwort 2 von Sebot
Vielen Dank für die Hilfe.
Das Modul selbst funktioniert, allerdings wird die E-mail nicht versendet.
Ich vermute das es daran liegt, dass das Modul nur mit Outlook und nicht mit anderen E-mail Programmen (bspw. Outlook Express) funktioniert.
Kann man das verallgemeinern, so dass es mit den meisten E-mail Programmen funktioniert?
Grüße
Sebastian
Das Modul selbst funktioniert, allerdings wird die E-mail nicht versendet.
Ich vermute das es daran liegt, dass das Modul nur mit Outlook und nicht mit anderen E-mail Programmen (bspw. Outlook Express) funktioniert.
Kann man das verallgemeinern, so dass es mit den meisten E-mail Programmen funktioniert?
Grüße
Sebastian
Antwort 3 von morpheus__85
Hallo Sebot,
was meinst du mit nicht versendet?
Wird die mail geöffnet und du musst auf "Senden" klicken oder passiert gar nichts?
Wenn die mail nicht versendet wird füge mal noch
.Display
SendKeys "%s", True
Also dann so:
Option Explicit
Sub Mappe_versenden_als_EMail()
Dim objOL As Object
Dim objMail As Object
Dim Bezeichnung As String
Dim MAdr As String
Set objOL = CreateObject("Outlook.Application")
Set objMail = objOL.CreateItem(0)
Bezeichnung = ActiveWorkbook.Name
MAdr = "@freenet.de" 'Deine E-Mail Adresse
Application.ScreenUpdating = False
With objMail
.To = MAdr
.Subject = Bezeichnung
.Body = "Hallo Kollege"
.Attachments.Add ActiveWorkbook.FullName
.Display
SendKeys "%s", True
End With
MsgBox ("Tabelle wurde erfolgreich versendet.")
Application.ScreenUpdating = True
End Sub
Gruß
morpheus
was meinst du mit nicht versendet?
Wird die mail geöffnet und du musst auf "Senden" klicken oder passiert gar nichts?
Wenn die mail nicht versendet wird füge mal noch
.Display
SendKeys "%s", True
Also dann so:
Option Explicit
Sub Mappe_versenden_als_EMail()
Dim objOL As Object
Dim objMail As Object
Dim Bezeichnung As String
Dim MAdr As String
Set objOL = CreateObject("Outlook.Application")
Set objMail = objOL.CreateItem(0)
Bezeichnung = ActiveWorkbook.Name
MAdr = "@freenet.de" 'Deine E-Mail Adresse
Application.ScreenUpdating = False
With objMail
.To = MAdr
.Subject = Bezeichnung
.Body = "Hallo Kollege"
.Attachments.Add ActiveWorkbook.FullName
.Display
SendKeys "%s", True
End With
MsgBox ("Tabelle wurde erfolgreich versendet.")
Application.ScreenUpdating = True
End Sub
Gruß
morpheus
Antwort 4 von coros
Hallo Sebastian,
die hier aufgezeigten VBA-Code funktionieren nur mit Outlook. Outloo Express kann man aus Excel heraus nicht ansprechen, da Outlook Express kein VBA kennt.
Einen allgemeinen Code für alle E-Mailprogramme gibt es nicht.
Man könnte eine E-Mail über Winsock versenden, das hat aber den Nachteil, dass der Benutzer, der die Mail versenden soll, vor dem Versand den Postausgangsserver, die E-Mailadresse, über die die Mail versandt werden soll und das Passwort eintragen muss. Dann kann er auch die Mail gleich selber schreiben und die Exceldatei anhängen.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
die hier aufgezeigten VBA-Code funktionieren nur mit Outlook. Outloo Express kann man aus Excel heraus nicht ansprechen, da Outlook Express kein VBA kennt.
Einen allgemeinen Code für alle E-Mailprogramme gibt es nicht.
Man könnte eine E-Mail über Winsock versenden, das hat aber den Nachteil, dass der Benutzer, der die Mail versenden soll, vor dem Versand den Postausgangsserver, die E-Mailadresse, über die die Mail versandt werden soll und das Passwort eintragen muss. Dann kann er auch die Mail gleich selber schreiben und die Exceldatei anhängen.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 5 von Sebot
Die E-mail wird wahrscheinlich deshalb nicht versendet, da ich ein anderes E-mail Programm verwende (Outlook Express) und das Modul auf Microsoft Outlook ausgelegt ist.
Fraglich ist jetzt, ob man das auf Express umschreiben kann, bzw. ob man es für mehrere E-mail Programme gleichzeitig auslegen kann?
Fraglich ist jetzt, ob man das auf Express umschreiben kann, bzw. ob man es für mehrere E-mail Programme gleichzeitig auslegen kann?
Antwort 6 von coros
Hallo Sebastian,
hast DU meinen Beitrag gelesen? Dort habe ich das mit Outlook Express usw. erklärt.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
hast DU meinen Beitrag gelesen? Dort habe ich das mit Outlook Express usw. erklärt.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 7 von Sebot
Sorry Oliver. Habe deine Antwort nicht mehr gesehen.
Wenn ich über Datei -> Senden an gehe, dann spricht Excel das von mir verwendete E-mail Programm an.
Mit VBA funktioniert das dann nicht?
Wenn ich über Datei -> Senden an gehe, dann spricht Excel das von mir verwendete E-mail Programm an.
Mit VBA funktioniert das dann nicht?
Antwort 8 von coros
Hallo Sebastian,
nein, weil man dazu wissen müsste, an welchen Stellen des Mailprogramms, sofern dieses VB oder VBA verstehen würde, man dieses anpacken müsste, damit man die Befehle an das Mailprogramm übergeben kann.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
nein, weil man dazu wissen müsste, an welchen Stellen des Mailprogramms, sofern dieses VB oder VBA verstehen würde, man dieses anpacken müsste, damit man die Befehle an das Mailprogramm übergeben kann.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 9 von Sebot
Sorry Oliver. Habe deine Antwort nicht mehr gesehen.
Wenn ich über Datei -> Senden an gehe, dann spricht Excel das von mir verwendete E-mail Programm an.
Mit VBA funktioniert das dann nicht?
Wenn ich über Datei -> Senden an gehe, dann spricht Excel das von mir verwendete E-mail Programm an.
Mit VBA funktioniert das dann nicht?
Antwort 10 von Sebot
Sorry Oliver. Habe deine Antwort nicht mehr gesehen.
Wenn ich über Datei -> Senden an gehe, dann spricht Excel das von mir verwendete E-mail Programm an.
Mit VBA funktioniert das dann nicht?
Wenn ich über Datei -> Senden an gehe, dann spricht Excel das von mir verwendete E-mail Programm an.
Mit VBA funktioniert das dann nicht?
Antwort 11 von fedjo
Hallo Sebastian.
in ein Modul einfügen, E-Mail ändern und auf Senden gehen.
Gruß
fedjo
Sub Mail()
ActiveWorkbook.SendMail "@freenet.de", "Neue Datei xlstipps", False
End Sub
in ein Modul einfügen, E-Mail ändern und auf Senden gehen.
Gruß
fedjo
Sub Mail()
ActiveWorkbook.SendMail "@freenet.de", "Neue Datei xlstipps", False
End Sub
Antwort 12 von Sebot
Vielen Dank nochmal für eure Unterstützung. Habe das ganze jetzt so hinbekommen wie ich es mir vorstelle.
Gruß
Sebastian
Gruß
Sebastian
Antwort 13 von Sebot
Hallo,
ich hätte da nochmal eine Frage. Habe mir jetzt ein Makro aufgezeichnet.
Dabei führt das Makro die Schritte "Datei"->"Senden an"->"Mailempfänger" aus.
Das funktioniert auch alles soweit. Allerdings fügt der immer die gesamte Arbeitsmappe ein.
Kann man das Ganze auch so einrichten das nur ein Tabellenblatt als Anhang eingefügt wird?
Grüße
Sebastian
ich hätte da nochmal eine Frage. Habe mir jetzt ein Makro aufgezeichnet.
Dabei führt das Makro die Schritte "Datei"->"Senden an"->"Mailempfänger" aus.
Das funktioniert auch alles soweit. Allerdings fügt der immer die gesamte Arbeitsmappe ein.
Kann man das Ganze auch so einrichten das nur ein Tabellenblatt als Anhang eingefügt wird?
Grüße
Sebastian
Antwort 14 von coros
Hallo Sebastiabn,
zeichne Dir Dein Makro nochmal neu auf. Allerdings kopiere beim Aufzeichnen Dein tabellenblatt, dass versandt werden soll, in eine neue Arbeitsmappe, speichere diese und führe dann die Funktion "Senden an ...." aus. Dann sollte nur die Datei mit Deinem Tabellenblatt versandt werden.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
zeichne Dir Dein Makro nochmal neu auf. Allerdings kopiere beim Aufzeichnen Dein tabellenblatt, dass versandt werden soll, in eine neue Arbeitsmappe, speichere diese und führe dann die Funktion "Senden an ...." aus. Dann sollte nur die Datei mit Deinem Tabellenblatt versandt werden.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 15 von Sebot
Hey Oliver,
das Ganze funktioniert zwar, allerdings speichert Excel in der neuen Arbeitsmappe immer eine Bilddatei von der ursprünglichen Tabelle ab, so dass die Tabelle von der Bilddatei überdeckt ist; sieht dann sehr verzerrt/verschwommen aus.
Hast du es schonmal ausprobiert? Habe es eigentlich genau nach deiner Anleitung gemacht.
Grüße
Sebastian
das Ganze funktioniert zwar, allerdings speichert Excel in der neuen Arbeitsmappe immer eine Bilddatei von der ursprünglichen Tabelle ab, so dass die Tabelle von der Bilddatei überdeckt ist; sieht dann sehr verzerrt/verschwommen aus.
Hast du es schonmal ausprobiert? Habe es eigentlich genau nach deiner Anleitung gemacht.
Grüße
Sebastian
Antwort 16 von coros
Hallo Sebastiabn,
Klicke mit der rechten Maustaste auf das Blatt, das Du versenden möchtest. Wähle im Menü „Verschieben/ Kopieren…“ aus. In dem Fenster wählst Du „Neue Arbeitsmappe“ und unten klickst Du auf „Kopie erstellen“. Dann sollte er Dir das Blatt in eine neue Datei kopieren.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Klicke mit der rechten Maustaste auf das Blatt, das Du versenden möchtest. Wähle im Menü „Verschieben/ Kopieren…“ aus. In dem Fenster wählst Du „Neue Arbeitsmappe“ und unten klickst Du auf „Kopie erstellen“. Dann sollte er Dir das Blatt in eine neue Datei kopieren.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 17 von Sebot
Danke Oliver. Funktioniert.
Eine kleine Frage hätte ich allerdings noch. Die neue Datei, in der die Tabelle kopiert wird und auch von da versendet wird, heißt dann immer "MappeX" oder kann man auf den Dateinamen noch Einfluss nehmen?
Eine kleine Frage hätte ich allerdings noch. Die neue Datei, in der die Tabelle kopiert wird und auch von da versendet wird, heißt dann immer "MappeX" oder kann man auf den Dateinamen noch Einfluss nehmen?
Antwort 18 von coros
Hallo Sebastian,
mit
wird die gerade aktive Datei, also die, die kopiert wurtde, hier unter C:\ mit dem Namen "Test.xls" abgespeichert. Bei Dir musst Du dann den Pfad und den Dateinamen noch anpassen.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
mit
ActiveWorkbook.SaveAs "C:\Test.xls"
wird die gerade aktive Datei, also die, die kopiert wurtde, hier unter C:\ mit dem Namen "Test.xls" abgespeichert. Bei Dir musst Du dann den Pfad und den Dateinamen noch anpassen.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 19 von Sebot
Vielen Dank! Klappt alles.
Antwort 20 von Sebot
Eine kleine Frage hätte ich noch.
Ich habe jetzt ein Makro erstellt, wobei das zu verschickende Tabellenblatt in eine neue Arbeitsmappe kopiert wird, so dass nur ein Tabelleblatt verschickt wird.
Das funktioniert auch wie gehabt wunderbar.
Das Problem ist jetzt, dass ich in der Ursprungsdatei für den Empfänger ein Makro zum Antworten bzw. Drucken gemacht habe.
Wenn ich nun das Makro "Email versenden" ausführe, dann funktionieren beim Empfänger die Makros zum Antworten bzw. Drucken nicht mehr, da ja das Tabellenblatt verschoben wurde; die Module im Visual Basic Editor leider nicht.
Kann man das irgendwie einrichten?
Ich habe jetzt ein Makro erstellt, wobei das zu verschickende Tabellenblatt in eine neue Arbeitsmappe kopiert wird, so dass nur ein Tabelleblatt verschickt wird.
Das funktioniert auch wie gehabt wunderbar.
Das Problem ist jetzt, dass ich in der Ursprungsdatei für den Empfänger ein Makro zum Antworten bzw. Drucken gemacht habe.
Wenn ich nun das Makro "Email versenden" ausführe, dann funktionieren beim Empfänger die Makros zum Antworten bzw. Drucken nicht mehr, da ja das Tabellenblatt verschoben wurde; die Module im Visual Basic Editor leider nicht.
Kann man das irgendwie einrichten?