Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: per Knopfdruck aus Excel eine E-Mail senden

per Knopfdruck aus Excel eine E-Mail senden
15.08.2016 14:50:42
Kirstin
Hallo an alle,
nicht böse sein, wenn diese Frage schon mal hier im Forum geschrieben war. Ich habe vieles schon durchstöbert und einiges gefunden, die zu meinem Problem passten.
Leider komme ich jetzt aber einfach nicht weiter.
Folgendes:
Ich möchte per Button eine E-Mail erzeugen (versenden soll der User selber). Der E-Mail Verteiler steht in der Zelle B1. Der Betreff in Zelle B2. Die eigentliche wichtige Tabelle ist eine Pivot-Tabelle, die vorher aktualisert wurde und gefilter ist auf das heutige Datum (das funktioniert schon). Die Tabelle befindet sich in dem gleichen Excel-Sheet, wie der Verteiler und der Betreff.
Da diese Pivot von Tag zu Tag unterschiedlich ist (also die länge nach unten), habe ich es erst mal so gelöst, dass der User den Bereich markieren muss, die in den Body der E-Mail soll. Hab auch noch etwas Text, der um die Tabelle in den Body soll und eine Signatur.
Soweit funktioniert mein Makro auch schon. Die E-Mail wird erzeugt und alles ist drin. Mein Problem ist nun, dass diese blöde Tabelle immer Zentriet in der E-Mail auftaucht. Ich möchte diese aber, wie der rest der E-Mail linksbündig haben.
Ich hoffe jemand kann mir helfen. Und wie gesagt, bitte nciht zerreissen, wenn diese Lösung schon irgendwo steht. Habe es einfach nciht gefunden.
Hier mein Makro:
Option Explicit

Public Sub SendMyMailNeu()
Dim Bereich As Range
Dim strGruß As String
Dim strBye As String
Dim strBetreff As String
Dim strEMail As String
Dim olApp As Object
Dim olMail As Object
Set Bereich = Application.Selection
' MsgBox Bereich.Address
' Betreff aus Zelle B2 beziehen
strBetreff = Range("B2").Value
' Adressenliste aus A2 beziehen
strEMail = Range("B1").Value
' Fester Text
strGruß = "Guten Morgen Sabine,"
' Fester Text
strBye = "Viele Grüße"
' E-Mail erstellen
Set olApp = GetObject(, "Outlook.Application")
Set olMail = olApp.createitem(0)
' Mail anzeigen
olMail.Display
' Adressverteiler einfügen
olMail.To = strEMail
' Signatur eintragen
olMail.GetInspector
' Betreffzeile einfügen
olMail.Subject = strBetreff
' Text
olMail.htmlBody = strGruß & "  " & fncRangeToHtml("Rundmail", Bereich.Address) & " _
 " & strBye & olMail.htmlBody
On Error GoTo 0
Set olMail = Nothing
End Sub

' Funktion damit die zu kopierende Tabelle eine Tabelle bleibt

Private Function fncRangeToHtml(strWorksheetname As String, strRangeaddress As String) As  _
String
Dim objFilesytem As Object
Dim objTextstream As Object
Dim strFilename As String
strFilename = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
ActiveWorkbook.PublishObjects.Add(SourceType:=xlSourceRange, Filename:=strFilename, Sheet:= _
strWorksheetname, Source:=strRangeaddress, HtmlType:=xlHtmlStatic).Publish True
Set objFilesytem = CreateObject("Scripting.FileSystemObject")
Set objTextstream = objFilesytem.GetFile(strFilename).OpenAsTextStream(1, -2)
fncRangeToHtml = objTextstream.readall
objTextstream.Close
Set objTextstream = Nothing
Set objFilesytem = Nothing
Kill strFilename
End Function

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: per Knopfdruck aus Excel eine E-Mail senden
15.08.2016 15:56:24
ChrisL
Hi Kirstin
Ich kann es nicht testen (da kein Outlook), aber ich meine folgende Anpassung müsste helfen:
ersetze:
fncRangeToHtml("Rundmail", Bereich.Address)
durch:
Replace(fncRangeToHtml("Rundmail", Bereich.Address), "align=center", "align=left")
cu
Chris
AW: per Knopfdruck aus Excel eine E-Mail senden
16.08.2016 07:45:13
Kirstin
Guten Morgen Chris,
super, es funktioniert. Ich danke dir. Dachte mir schon, dass ich nur eine kleinigkeit ändern muss. Kam einfach nicht darauf, wie ich es anstelle.
Danke danke danke
VG Kirstin
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

E-Mail aus Excel per Knopfdruck versenden


Schritt-für-Schritt-Anleitung

Um eine E-Mail aus einer Excel-Tabelle zu versenden, kannst Du ein Makro verwenden, das die E-Mail automatisch erstellt. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Füge den folgenden VBA-Code in das Modul ein:

    Public Sub SendMyMailNeu()
       Dim Bereich As Range
       Dim strGruß As String
       Dim strBye As String
       Dim strBetreff As String
       Dim strEMail As String
       Dim olApp As Object
       Dim olMail As Object
       Set Bereich = Application.Selection
       strBetreff = Range("B2").Value
       strEMail = Range("B1").Value
       strGruß = "<font face arial>Guten Morgen,</font>"
       strBye = "<font face arial>Viele Grüße</font>"
    
       Set olApp = GetObject(, "Outlook.Application")
       Set olMail = olApp.CreateItem(0)
       olMail.Display
       olMail.To = strEMail
       olMail.Subject = strBetreff
       olMail.HTMLBody = strGruß & " " & fncRangeToHtml("Rundmail", Bereich.Address) & " " & strBye & olMail.HTMLBody
    End Sub
  4. Füge die Funktion fncRangeToHtml hinzu, um den ausgewählten Bereich als HTML zu formatieren:

    Private Function fncRangeToHtml(strWorksheetname As String, strRangeaddress As String) As String
       Dim objFilesystem As Object
       Dim objTextstream As Object
       Dim strFilename As String
       strFilename = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
       ActiveWorkbook.PublishObjects.Add(SourceType:=xlSourceRange, Filename:=strFilename, Sheet:=strWorksheetname, Source:=strRangeaddress, HtmlType:=xlHtmlStatic).Publish True
    
       Set objFilesystem = CreateObject("Scripting.FileSystemObject")
       Set objTextstream = objFilesystem.GetFile(strFilename).OpenAsTextStream(1, -2)
       fncRangeToHtml = objTextstream.ReadAll
       objTextstream.Close
       Kill strFilename
    End Function
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Erstelle einen Button in Excel, der das Makro ausführt. Gehe zu Entwicklertools > Einfügen > Button (Formularsteuerelement).

  7. Weise dem Button das Makro SendMyMailNeu zu.

Jetzt kannst Du per Knopfdruck eine E-Mail aus Excel versenden.


Häufige Fehler und Lösungen

Problem: Die Tabelle wird zentriert in der E-Mail angezeigt.

Lösung: Ändere den Code in der Zeile, die die HTML-Tabelle erstellt. Ersetze die Zeile:

fncRangeToHtml("Rundmail", Bereich.Address)

mit:

Replace(fncRangeToHtml("Rundmail", Bereich.Address), "align=center", "align=left")

Alternative Methoden

Wenn Du keine VBA-Makros verwenden möchtest, gibt es auch die Möglichkeit, Excel-Daten als E-Mail-Anhang zu versenden. Gehe dazu folgendermaßen vor:

  1. Speichere die Excel-Datei.
  2. Öffne ein neues E-Mail-Fenster in Outlook.
  3. Wähle „Datei anhängen“ und wähle die gespeicherte Excel-Datei aus.
  4. Füge die Empfänger und den Betreff hinzu und sende die E-Mail.

Diese Methode eignet sich, um eine Excel-Datei per Mail zu versenden, ohne ein Makro zu verwenden.


Praktische Beispiele

Hier ist ein praktisches Beispiel für die Verwendung des SendMyMailNeu-Makros:

  • Anwendungsfall: Du möchtest täglich eine aktualisierte Pivot-Tabelle per E-Mail versenden.
  • Vorgehensweise: Aktualisiere die Pivot-Tabelle, markiere den gewünschten Bereich, und klicke auf den „E-Mail senden“-Button, um die E-Mail an den in Zelle B1 angegebenen Empfänger zu senden.

Tipps für Profis

  • E-Mail mit Anhang: Du kannst das Makro erweitern, um eine Excel-Datei als Anhang zu versenden. Füge die Zeile olMail.Attachments.Add "Pfad\zur\Datei.xlsx" hinzu.

  • Automatisierung: Nutze den Taskplaner von Windows, um das Makro zu bestimmten Zeiten automatisch auszuführen, damit Du regelmäßig E-Mails versendest.

  • Fehlerbehandlung: Implementiere On Error-Anweisungen, um Fehler beim Senden der E-Mail abzufangen und besser zu diagnostizieren.


FAQ: Häufige Fragen

1. Wie versende ich eine Excel-Tabelle automatisch per Mail?
Du kannst ein VBA-Makro erstellen, das die Tabelle in den E-Mail-Body einfügt und die E-Mail an den angegebenen Empfänger sendet.

2. Kann ich mehrere Empfänger in einer E-Mail hinzufügen?
Ja, Du kannst mehrere E-Mail-Adressen in Zelle B1 durch ein Semikolon getrennt eingeben. Beispiel: email1@example.com; email2@example.com.

3. Ist es möglich, die E-Mail automatisch zu versenden?
Ja, es gibt Möglichkeiten, das E-Mail-Versenden zu automatisieren, indem Du das Makro entsprechend anpasst und z.B. im Windows Task Scheduler planst.

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