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

Forumthread: VBA bestimme Zellen per Mail versenden...

VBA bestimme Zellen per Mail versenden...
Evil
Hallo,
kann mir einer sagen warum ich immer als Fehler "untere Array Grenze muss null sein" hier in diesem Beispiel bekomme? Ich will lediglich nur dir markierten Zellen mit einer Mail versenden.

Sub q()
Dim oOL As Object
Dim oOLMsg As Object
Dim oOLRecip As Object
Dim oOLBody As Object
Dim sAddress As String
Dim rng As Range
Set rng = ActiveWindow.RangeSelection
sAddress = Range("D1").Value
Set oOL = CreateObject("Outlook.Application")
Set oOLMsg = oOL.CreateItem(0)
With oOLMsg
Set oOLRecip = .Recipients.Add(sAddress)
.Subject = "Dies ist ein Outlook-Test"
.Body = (rng)
.Importance = 1
.Send
End With
oOLRecip.Resolve
Set oOLRecip = Nothing
Set oOLMsg = Nothing
Set oOL = Nothing
End Sub

Vielen Dank....
MfG
Evil
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA bestimme Zellen per Mail versenden...
Ramses
Hallo
(rng) wird vermutlich als Array interpretiert.
Damit geht es


Sub Excel_FixRange_via_Outlook_Senden()
    Dim OutApp As Object, Mail As Object, i
    Dim Nachricht
    'Verweis auf "Microsoft Forms 2.0 Object Library" aktivieren !!
    'sonst geht es nicht
    'Dataobject wird gebraucht wegen der Zwischenablage
    Dim ClpObj As DataObject
    Set ClpObj = New DataObject
    Set OutApp = CreateObject("Outlook.Application")
    Set Nachricht = OutApp.CreateItem(0)
    'Excelbereich der versendet werden soll
    'Bereich wird in die Zwischenablage kopiert
    Range("A1:A5").Copy
    For i = 1 To 3
    With Nachricht
        .Subject = "Betreffzeile Header"
        'Zwischenablage wird eingefügt
        ClpObj.GetFromClipboard
        .Body = ClpObj.GetText(1)
        .To = "irgendwer@irgendein-provider.de"
        'Hier wird die Mail angezeigt
        .Display
        'Hier wird die Mail gleich in den Postausgang gelegt
        .Send
    End With
    Next i
    Set OutApp = Nothing
    Set Nachricht = Nothing
End Sub


Gruss Rainer
Anzeige
Nachfrage
Charly
Hi Ramses,
sorry das ich mich hier einklinke.
Vieleicht kannst du mir ja helfen.
Wie müsste der Code geändert werden wenn:
in A2:A20 mindestens eine Mailadresse steht
in C1 der Betreff
in C2 der Pfad zum Anhang oder nichts
in C4:C20 der Text
Danke schon mal.
Gruss Charly
Anzeige
Danke
Charly
Hi Rainer,
vielen Dank.
Werds gleich probieren.
Schönen Sonntag noch.
Gruss Charly
AW: VBA bestimme Zellen per Mail versenden...
Evil
...Danke erstmal für die schnelle Hilfe.
1 Problem ist noch, ich bekomme nach dem versenden die Fehlermeldung "Die Methode 'Subject' für das Objekt '_MailItem' ist fehlgeschlagen".
Hier noch mal meine kleine Änderung des VBA Scripts....

Sub Excel_FixRange_via_Outlook_Senden()
Dim OutApp As Object, Mail As Object, i
Dim Nachricht
'Verweis auf "Microsoft Forms 2.0 Object Library" aktivieren !!
'sonst geht es nicht
'Dataobject wird gebraucht wegen der Zwischenablage
Dim ClpObj As DataObject
Set ClpObj = New DataObject
Set OutApp = CreateObject("Outlook.Application")
Set Nachricht = OutApp.CreateItem(0)
'Excelbereich der versendet werden soll
'Bereich wird in die Zwischenablage kopiert
ActiveWindow.RangeSelection.Copy
For i = 1 To 3
With Nachricht
.Subject = "Betreffzeile Header"
'Zwischenablage wird eingefügt
ClpObj.GetFromClipboard
.Body = ClpObj.GetText(1)
.To = "xxxxx"
'Hier wird die Mail angezeigt
.Display
'Hier wird die Mail gleich in den Postausgang gelegt
.Send
End With
Next i
Set OutApp = Nothing
Set Nachricht = Nothing
Set Mail.Subject = Nothing
End Sub

MfG Robert
Anzeige
AW: VBA bestimme Zellen per Mail versenden...
Evil
Hallo,
ich habe erstmal mit einer Testmappe ....getestet 8)
Nun dort habe ich dann doch alles zum laufen bekommen...
Nun habe ich das Problem das es mit der Mappe nicht läuft wo ich das unbedingt brauche.
Ich habe die Vermutung das es MS Form liegt...wo und wie kann man das aktivieren ?
'Verweis auf "Microsoft Forms 2.0 Object Library" aktivieren
MfG Evil
Anzeige
AW: VBA bestimme Zellen per Mail versenden...
02.05.2004 14:46:23
Nepumuk
Hallo Robert,
einfach ein Userform einfügen und wieder löschen.
Gruß
Nepumuk
AW: VBA bestimme Zellen per Mail versenden...
Ramses
Hallo
... oder in Ergänzung zu Nepumuk
VB-Editor - Extras - Verweise
den Verweis auf die "Microsoft Forms 2.0 Object Library" setzen.
Wenn diese aus irgendwelchen Gründen noch nicht eingetragen ist, klick auf "Durchsuchen" und wähle im Windowsverzeichnis unter "..\System32\" die Datei "FM20.DLL" aus.
Gruss Rainer
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zellen aus Excel per Mail versenden


Schritt-für-Schritt-Anleitung

Um Zellen aus Excel per Mail zu versenden, kannst Du ein VBA-Makro verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor: Drücke ALT + F11.

  2. Einfügen eines Moduls: Klicke auf Einfügen > Modul.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub Excel_Bereich_als_Email_versenden()
        Dim OutApp As Object
        Dim Mail As Object
        Dim ClpObj As DataObject
        Set ClpObj = New DataObject
        Set OutApp = CreateObject("Outlook.Application")
        Set Mail = OutApp.CreateItem(0)
    
        ' Excelbereich kopieren
        ActiveWindow.RangeSelection.Copy
        ClpObj.GetFromClipboard
    
        With Mail
            .Subject = "Betreffzeile"
            .Body = ClpObj.GetText(1)
            .To = "empfaenger@example.com"
            .Display ' oder .Send, um direkt zu senden
        End With
    
        Set OutApp = Nothing
        Set Mail = Nothing
    End Sub
  4. Passe den Code an: Ersetze empfaenger@example.com mit der tatsächlichen E-Mail-Adresse und ändere den Betreff nach Bedarf.

  5. Führe das Makro aus: Mit F5 oder über das Menü.

Jetzt kannst Du markierte Zellen aus Deiner Excel-Tabelle per E-Mail versenden!


Häufige Fehler und Lösungen

  • "Unterer Array Grenze muss null sein": Diese Fehlermeldung tritt auf, wenn rng nicht korrekt als Range definiert ist. Achte darauf, dass Du einen gültigen Bereich auswählst.

  • "Die Methode 'Subject' für das Objekt '_MailItem' ist fehlgeschlagen": Dieser Fehler kann auftreten, wenn der Betreff nicht korrekt gesetzt ist. Stelle sicher, dass .Subject einen gültigen Text enthält.

  • Microsoft Forms 2.0 Object Library nicht aktiviert: Gehe zu Extras > Verweise im VBA-Editor und aktiviere den Verweis auf die "Microsoft Forms 2.0 Object Library". Falls sie nicht aufgelistet ist, kannst Du die Datei FM20.DLL im Windowsverzeichnis unter C:\Windows\System32 suchen und auswählen.


Alternative Methoden

Falls Du keine VBA-Kenntnisse hast, kannst Du auch folgende Methoden nutzen:

  • Excel-Funktionen: Verwende Funktionen wie HYPERLINK, um E-Mail-Links zu erstellen.

  • Manuelles Kopieren: Kopiere den gewünschten Bereich und füge ihn direkt in eine neue E-Mail in Outlook ein.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du Zellen per Mail versenden kannst:

  1. Sendung eines spezifischen Bereichs:

    Range("A1:A10").Copy
  2. Versenden mit Anhängen:

    .Attachments.Add "C:\Pfad\zu\deinem\Anhang.txt"
  3. Mehrere Empfänger:

    .To = "empfaenger1@example.com; empfaenger2@example.com"

Diese Beispiele können leicht in den vorherigen VBA-Code integriert werden, um Deine Anforderungen zu erfüllen.


Tipps für Profis

  • Fehlerbehandlung einfügen: Verwende On Error Resume Next, um sicherzustellen, dass das Makro auch bei einem Fehler weiterläuft.
  • Automatisierung: Plane das Makro mit dem Windows Task Scheduler, um es regelmäßig auszuführen.
  • Anpassung des E-Mail-Formats: Setze .HTMLBody anstelle von .Body, wenn Du HTML-formatierte E-Mails versenden möchtest.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zellen in einer E-Mail versenden? Du kannst den gewünschten Bereich kopieren und in den E-Mail-Body einfügen, wie im Schritt-für-Schritt-Code gezeigt.

2. Funktioniert das auch ohne Outlook? Dieses VBA-Makro ist speziell für Outlook gedacht. Für andere E-Mail-Clients müsstest Du eine andere Methode verwenden.

3. Kann ich den versendeten Bereich formatieren? Ja, wenn Du .HTMLBody anstelle von .Body verwendest, kannst Du die Zellen formatieren, bevor Du sie versendest.

4. Wie aktiviere ich das Makro in Excel? Gehe zu Datei > Optionen > Sicherheitscenter > Einstellungen für das Sicherheitscenter und aktiviere die Makros.

5. Gibt es eine Möglichkeit, E-Mails automatisch zu versenden? Ja, Du kannst Timer oder Schleifen verwenden, um das Makro zu bestimmten Zeiten auszuführen.

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