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

Send Range: ActiveSheet.MailEnvelope

Forumthread: Send Range: ActiveSheet.MailEnvelope

Send Range: ActiveSheet.MailEnvelope
12.06.2014 17:09:17
Henry
Hallo Zusammen,
ich benutze folgenden VBA um aus Excel eine Range direkt per MailEnvelope zu versenden.
Sub Send_Range()
' Select the range of cells on the active worksheet.
ActiveSheet.Range("A12:F100").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
.Introduction = ""
.Item.To = ""
.Item.CC = "Beipsiel@Beispiel.de"
.Item.Subject = Range("F18").Value
.Item.Display
End With
End Sub
In der Range sind nun einige ausgeblendete Zeilen und sobald ich auf auswahl senden klicke erscheint folgende Meldung:
"Dieses Arbeitsblatt enthält ausgeblendete Zeilen oder Spalten, die der Empfänger einblenden kann. Möchten Sie den Vorgang fortsetzen ?"
Ich habe mir einige Testmails deshalb auf meine eigene E-Mail gesendet und konnte die Zeilen nicht einblenden. Also ging ich davon aus, dass die Warnung nicht relevant ist . Jedoch habe ich nun eine Emailantwort eines Empfängers bei dem alle Zeilen also auch die ausgeblendeten zu sehen waren.
Wie könnte ich das verhindern ?

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Send Range: ActiveSheet.MailEnvelope
13.06.2014 08:31:07
Nepumuk
Hallo,
indem du nur die sichtbaren Zellen in eine neue Tabelle kopierst welch du dann versendest.
Beispiel:
Public Sub Test()
    Worksheets("Tabelle1").Range("A12:F100").SpecialCells(xlCellTypeVisible).Copy
    With Worksheets("Tabelle2")
        .UsedRange.Clear
        .Paste Destination:=.Range("A12")
    End With
    Application.CutCopyMode = 0
End Sub

Gruß
Nepumuk
Anzeige
;
Anzeige

Infobox / Tutorial

Range per Mail versenden mit ActiveSheet.MailEnvelope


Schritt-für-Schritt-Anleitung

Um eine Range aus Excel über die MailEnvelope-Funktion zu versenden, kannst du den folgenden VBA-Code verwenden. Der Code zeigt, wie du die Zellen im aktiven Arbeitsblatt auswählst und sie per E-Mail versendest.

Sub Send_Range()
    ' Wähle den Bereich von Zellen im aktiven Arbeitsblatt aus.
    ActiveSheet.Range("A12:F100").Select
    ' Zeige das Envelope des ActiveWorkbook an.
    ActiveWorkbook.EnvelopeVisible = True
    ' Setze die optionalen Felder für die E-Mail, einschließlich Betreff und Empfänger.
    With ActiveSheet.MailEnvelope
        .Introduction = ""
        .Item.To = ""
        .Item.CC = "Beispiel@Beispiel.de"
        .Item.Subject = Range("F18").Value
        .Item.Display
    End With
End Sub

Stelle sicher, dass du die Empfängeradresse und den Betreff entsprechend anpasst. Mit ActiveWorkbook.EnvelopeVisible = True wird das Mail-Envelope sichtbar gemacht, bevor die E-Mail gesendet wird.


Häufige Fehler und Lösungen

Ein häufiges Problem, das beim Versenden von E-Mails mit ActiveSheet.MailEnvelope auftritt, ist die Warnmeldung über ausgeblendete Zeilen. Um dies zu vermeiden, kannst du die sichtbaren Zellen in eine neue Tabelle kopieren.

Wenn du die folgende Fehlermeldung erhältst:

Dieses Arbeitsblatt enthält ausgeblendete Zeilen oder Spalten, die der Empfänger einblenden kann. Möchten Sie den Vorgang fortsetzen?

...kannst du das Problem umgehen, indem du nur die sichtbaren Zellen kopierst. Hier ist eine einfache Lösung:

Public Sub Test()
    Worksheets("Tabelle1").Range("A12:F100").SpecialCells(xlCellTypeVisible).Copy
    With Worksheets("Tabelle2")
        .UsedRange.Clear
        .Paste Destination:=.Range("A12")
    End With
    Application.CutCopyMode = 0
End Sub

Alternative Methoden

Eine alternative Methode zum Versenden einer Range über E-Mail ist die Verwendung von Outlook-Objekten in VBA. Hierbei kannst du eine E-Mail direkt über Outlook generieren, was mehr Kontrolle über den Versandprozess bietet.

Sub Send_Email_Using_Outlook()
    Dim OutlookApp As Object
    Dim OutlookMail As Object
    Set OutlookApp = CreateObject("Outlook.Application")
    Set OutlookMail = OutlookApp.CreateItem(0)

    With OutlookMail
        .To = "Beispiel@Beispiel.de"
        .Subject = "Betreff hier"
        .Body = "Hier ist der Inhalt der E-Mail."
        .Display ' oder .Send für sofortigen Versand
    End With
End Sub

Praktische Beispiele

Hier sind einige praktische Anwendungen für das Versenden von ActiveSheet.Range mit MailEnvelope:

  1. Monatliche Berichte: Versende automatisch monatliche Verkaufsberichte an dein Team.
  2. Statusupdates: Erstelle einen Statusbericht für Projekte und sende ihn wöchentlich.
  3. Datenanfragen: Sende gezielte Datenanfragen an bestimmte Teammitglieder.

Verwende den Code aus der Schritt-für-Schritt-Anleitung und passe die Range sowie die E-Mail-Adressen entsprechend an.


Tipps für Profis

  • Automatisierung: Du kannst VBA-Makros so planen, dass sie zu bestimmten Zeiten automatisch ausgeführt werden, z. B. zur Monatsmitte.
  • Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um sicherzustellen, dass dein Makro auch bei unerwarteten Problemen stabil läuft.
  • Benutzerdefinierte Vorlagen: Erstelle E-Mail-Vorlagen in Outlook, die du mit den Daten aus Excel automatisch ausfüllen kannst.

FAQ: Häufige Fragen

1. Kann ich mehrere Bereiche gleichzeitig versenden?
Ja, du kannst mehrere Ranges in einer E-Mail zusammenfassen, indem du sie in eine neue Tabelle kopierst und diese dann versendest.

2. Was ist der Unterschied zwischen ActiveSheet.Range und Range?
ActiveSheet.Range bezieht sich auf den Bereich im aktuell aktiven Arbeitsblatt, während Range in Bezug auf das aktive Arbeitsblatt oder ein spezifisches Arbeitsblatt verwendet werden kann.

3. Wie kann ich die E-Mail automatisch senden, ohne sie vorher anzuzeigen?
Ändere .Display zu .Send, um die E-Mail direkt zu senden, ohne dass das Mail-Fenster angezeigt wird.

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