Supportnet Computer
Planet of Tech

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

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

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

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.

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?

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.

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?

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.

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?

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?

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

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

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

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.

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

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.

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?

Antwort 18 von coros

Hallo Sebastian,

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 möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: