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

Forumthread: E-Mail versenden mit VBA mit fixer Absenderadresse

E-Mail versenden mit VBA mit fixer Absenderadresse
26.09.2018 10:12:54
Wigwam
Hallo zusammen,
es gibt ja schon einige VBA-Makros über E-Mail versenden per VBA.
Momentan verschickt er das Makro per Outlook mit meiner Absenderadresse (bzw. mit der des jeweiligen PC wo das Makro ausgeführt wird...)
Ich suche jedoch nach einer Möglichkeit dass ich eine fixe Absenderadresse (z.B. info@abc.de) einsteuern kann?
Hierzu finde ich leider nicht wirklich was.
Hier der aktuelle Code:
ActiveSheet.Range("A1:k200").Select
' Show the envelope on the ActiveWorkbook.
ActiveWorkbook.EnvelopeVisible = True
' Set the optional introduction field thats adds
' some header text to the email body. It also sets
' the To and Subject lines. Finally the message
' is sent.
With ActiveSheet.MailEnvelope
.Item.To = ActiveWorkbook.Sheets("Abgleich").Range("aj5").Text
.Item.Subject = Range("aj1")
.Item.Send
End With
Anzeige
AW: E-Mail versenden mit VBA mit fixer Absenderadresse
26.09.2018 11:16:44
Beverly
Hi,
hast du schon mal versucht, in der Zeile
.Item.To = ActiveWorkbook.Sheets("Abgleich").Range("aj5").Text

den Teil nach dem = durch deine Mail-Adresse zu ersetzen (Adresse in "")?


Anzeige
AW: E-Mail versenden mit VBA mit fixer Absenderadresse
26.09.2018 11:25:15
Wigwam
Besten Dank für die Antwort.
Du meinst hier aber mit Item.To die Empfänger-E-Mail-Adresse.
Ich bräuchte aber die Absenderadresse :-) Item.From funktioniert ja leider nicht...
AW: E-Mail versenden mit VBA mit fixer Absenderadresse
26.09.2018 13:39:51
Wigwam
Hallo Torsten,
eine Tür geht auf, die andere wieder zu :-)
Der Absendername funktioniert wie geschmiert.
Nur der E-Mail Body nicht mehr.
Es soll einfach ein bestimmter Tabellenbereich in den Body.
Die Befehle
Mail.Body = Cells(5, 5)
Mail.Body = Range("A1:c5").Select
Mail.Body = a & Chr(10) & Chr(10) & Chr(10) & mm
bringen nur einen leeren Body...
Hast Du noch einen Tipp?
Danke -wigwam
Sub TEST()
'ActiveSheet.Range("a1:b5").Select
Dim olApp As Outlook.Application
Dim objNachrich As MailItem
Set olApp = New Outlook.Application
Set objNachrich = olApp.CreateItem(0)
Set Mail = objNachrich
Mail.SentOnBehalfOfName = "hans@t-online.de"
Mail.BCC = ""
Mail.To = "monika@abc.de"
Mail.Body = Cells(5, 5)
'Mail.Body = Range("A1:c5").Select
'Mail.Body = a & Chr(10) & Chr(10) & Chr(10) & mm
Mail.Subject = "Erinnerung"
Mail.Display
End Sub

Anzeige
AW: E-Mail versenden mit VBA mit fixer Absenderadresse
26.09.2018 13:47:32
Torsten
leider kann ich mit deinen Variablen nicht viel anfangen. Kannst du mal eine Beispieldatei hochladen, dann kann man das besser nachvollziehen.
Um welchen genauen Tabellenbereich geht es denn?
AW: E-Mail versenden mit VBA mit fixer Absenderadresse
26.09.2018 13:49:33
Torsten
geht es nur um die Zelle E5?
AW: E-Mail versenden mit VBA mit fixer Absenderadresse
26.09.2018 13:54:28
Torsten
wenn ja dann versuchs mal so:
Sub TEST()
'ActiveSheet.Range("a1:b5").Select
Dim olApp As Outlook.Application
Dim objNachrich As MailItem
Dim bereich as String
bereich = Sheets("Dein Tabellenname").Cells(5, 5)  'hier den Tabellennamen eingeben, wo die  _
Zelle abgefragt wird
Set olApp = New Outlook.Application
Set objNachrich = olApp.CreateItem(0)
Set Mail = objNachrich
Mail.SentOnBehalfOfName = "hans@t-online.de"
Mail.BCC = ""
Mail.To = "monika@abc.de"
Mail.Body = bereich
'Mail.Body = Range("A1:c5").Select
'Mail.Body = a & Chr(10) & Chr(10) & Chr(10) & mm
Mail.Subject = "Erinnerung"
Mail.Display
End Sub

Anzeige
AW: E-Mail versenden mit VBA mit fixer Absenderadresse
26.09.2018 13:56:06
Wigwam
Hab Dir die Datei mal beigefügt.
https://www.herber.de/bbs/user/124243.xlsm
Möchte z.B. den Bereich A1:b5 einfach im Body haben.
Danke Dir.
AW: E-Mail versenden mit VBA mit fixer Absenderadresse
26.09.2018 15:14:16
Torsten
das Problem hierbei ist, dass du an Mail.Body nur Text uebergeben kannst. Mit einer Zelle ist das kein Thema, z.B. Cells(1, 1)
Aber wie einen Bereich in Text umwandeln. Da wirds problematisch.
Ich hab versucht ueber die Zwischenablage zu gehen, aber ohne Erfolg bis jetzt.
Ich stell das Thema mal wieder offen. Vielleicht hat noch jemand eine Idee.
Anzeige
AW: E-Mail versenden mit VBA mit fixer Absenderadresse
26.09.2018 15:18:21
Wigwam
Wenigstens bin ich dann nicht allein:-)
Komischerweise funktioniert es so. Aber da hab ich wieder keinen Absender drinnen...
ActiveSheet.Range("A1:k200").Select
ActiveWorkbook.EnvelopeVisible = True
With ActiveSheet.MailEnvelope
.Item.To = ActiveWorkbook.Sheets("Abgleich").Range("aj5").Text
.Item.Subject = Range("aj1")
.Item.Send
End With
Anzeige
AW: E-Mail versenden mit VBA mit fixer Absenderadresse
26.09.2018 15:28:32
Torsten
du hast die Zeile
.SentOnBehalfOfName = "hans@t-online.de"
vergessen
AW: E-Mail versenden mit VBA mit fixer Absenderadresse
26.09.2018 15:36:32
Wigwam
Weiß ich :-) Aber wo füge ich die Zeile
.SentOnBehalfOfName = "hans@t-online.de"

ein?
AW: E-Mail versenden mit VBA mit fixer Absenderadresse
27.09.2018 08:09:18
Torsten

ActiveSheet.Range("A1:k200").Select
ActiveWorkbook.EnvelopeVisible = True
With ActiveSheet.MailEnvelope
.Item.SentOnBehalfOfName = "hans@t-online.de"
.Item.To = ActiveWorkbook.Sheets("Abgleich").Range("aj5").Text
.Item.Subject = Range("aj1")
.Item.Send
End With

Anzeige
AW: E-Mail versenden mit VBA mit fixer Absenderadresse
27.09.2018 09:11:11
Wigwam
Jetzt funktioniert es. Torsten, Bester Mann!!
Danke Dir
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

E-Mail versenden mit VBA und fixer Absenderadresse


Schritt-für-Schritt-Anleitung

Um eine E-Mail aus Excel zu versenden und dabei eine fixe Absenderadresse zu verwenden, kannst Du folgendes VBA-Makro nutzen. Achte darauf, dass Du Microsoft Outlook installiert hast, da das Skript darauf basiert.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul ein (Einfügen > Modul).
  3. Kopiere den folgenden Code in das Modul:
Sub EmailVersenden()
    Dim olApp As Outlook.Application
    Dim Mail As MailItem

    Set olApp = New Outlook.Application
    Set Mail = olApp.CreateItem(0)

    With Mail
        .SentOnBehalfOfName = "info@abc.de" ' Setze die fixe Absenderadresse
        .To = "empfaenger@abc.de" ' Empfänger
        .Subject = "Betreff der E-Mail"
        .Body = "Hier ist der Inhalt der E-Mail."
        .Display ' Zeigt die E-Mail zum Überprüfen an
        '.Send ' Sende die E-Mail direkt ohne Vorschau
    End With
End Sub
  1. Ersetze die E-Mail-Adressen und den Inhalt nach Bedarf.
  2. Schließe den VBA-Editor und führe das Makro aus (Entwicklertools > Makros > EmailVersenden).

Häufige Fehler und Lösungen

  • Fehler: E-Mail wird nicht gesendet
    Stelle sicher, dass Outlook korrekt konfiguriert ist und Du die richtige Version verwendest. Das Skript funktioniert nur, wenn Outlook eine E-Mail senden kann.

  • Fehler: „Item.From“ funktioniert nicht
    Die Verwendung von .From in VBA ist nicht möglich. Stattdessen musst Du .SentOnBehalfOfName verwenden, um die Absenderadresse zu ändern.

  • Leerer E-Mail-Body
    Achte darauf, dass Du den Body der E-Mail korrekt setzt, indem Du eine Variable verwendest, die den gewünschten Inhalt enthält.


Alternative Methoden

Wenn Du keine fixe Absenderadresse benötigst, kannst Du auch die einfache Methode nutzen, um E-Mails zu senden, ohne das .SentOnBehalfOfName zu verwenden. Hier ist ein einfaches Beispiel:

Sub EinfacheEmail()
    Dim olApp As Outlook.Application
    Dim Mail As MailItem

    Set olApp = New Outlook.Application
    Set Mail = olApp.CreateItem(0)

    With Mail
        .To = "empfaenger@abc.de"
        .Subject = "Betreff der E-Mail"
        .Body = "Hier ist der Inhalt der E-Mail."
        .Send ' Sendet die E-Mail direkt
    End With
End Sub

Praktische Beispiele

Hier ist ein Beispiel, wie Du einen bestimmten Tabellenbereich in den E-Mail-Body einfügen kannst:

Sub EmailMitTabellenbereich()
    Dim olApp As Outlook.Application
    Dim Mail As MailItem
    Dim bereich As String

    bereich = Sheets("DeinTabellenname").Range("A1:B5").Value ' Ändere den Tabellennamen

    Set olApp = New Outlook.Application
    Set Mail = olApp.CreateItem(0)

    With Mail
        .SentOnBehalfOfName = "info@abc.de"
        .To = "empfaenger@abc.de"
        .Subject = "Betreff der E-Mail"
        .Body = bereich
        .Display ' Zeigt die E-Mail zum Überprüfen an
    End With
End Sub

Tipps für Profis

  • Testen vor dem Versenden: Verwende .Display anstelle von .Send, um die E-Mail vor dem Versenden zu überprüfen.
  • Fehlerbehandlung: Füge Fehlerbehandlungsroutinen hinzu, um Probleme während der Ausführung des Makros zu erfassen.
  • Automatisierung: Du kannst das Makro so planen, dass es zu bestimmten Zeiten automatisch ausgeführt wird, um regelmäßig Berichte zu versenden.

FAQ: Häufige Fragen

1. Kann ich das Makro auch ohne Outlook verwenden?
Nein, das Skript erfordert Outlook, da es die Outlook-Objektbibliothek verwendet.

2. Wie kann ich mehrere Empfänger hinzufügen?
Trenne die E-Mail-Adressen mit einem Semikolon (;). Beispiel: .To = "empfaenger1@abc.de; empfaenger2@abc.de".

3. Was kann ich tun, wenn ich die E-Mail anonym versenden möchte?
Das Versenden von E-Mails ohne einen Absender ist in der Regel nicht möglich und kann gegen die Nutzungsrichtlinien von E-Mail-Diensten verstoßen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige