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.
- Öffne Excel und drücke
ALT + F11, um den VBA-Editor zu öffnen.
- Füge ein neues Modul ein (
Einfügen > Modul).
- 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
- Ersetze die E-Mail-Adressen und den Inhalt nach Bedarf.
- 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.