Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Markierte Zeilen aus Tabelle per Mail versenden
#1
Morgen zusammen,

Ich möchte gerne 1 oder mehrere Markierte Zeilen aus einem Tabellenblatt per Mail versenden. Ich habe im Internet folgendes Makro gefunden, aber da gibts nur ein Haken.

Code:
Option Explicit

Public Sub TableToMail()
    Dim objOutlook As Object
    Dim objMail As Object
    Set objOutlook = CreateObject("Outlook.Application")
    Set objMail = objOutlook.CreateItem(0)
    With objMail
        .to = ""
        .Subject = "Test " & CStr(Date)
        .HTMLBody = RangeToHTML(ActiveSheet, ActiveSheet.Range("A1:L100"))
        .Display    'nur Anzeigen
'        .Send       'direkt senden
    End With
    Set objMail = Nothing
    Set objOutlook = Nothing
End Sub

Private Function RangeToHTML(objSheet As Worksheet, objRange As Range) As String
    Dim strFilename As String
    strFilename = Environ$("TEMP") & "/" & Format(Now, "dd-mm-yyyy_hh-mm-ss") & ".htm"
    ActiveWorkbook.PublishObjects.Add( _
        SourceType:=xlSourceRange, _
        Filename:=strFilename, _
        Sheet:=objSheet.Name, _
        Source:=objRange.Address, _
        HtmlType:=xlHtmlStatic).Publish True
    RangeToHTML = CreateObject("Scripting.FileSystemObject"). _
        GetFile(strFilename).OpenAsTextStream(1, -2).ReadAll
    Kill strFilename
End Function

Es soll nur markierte Zeile oder Zeilen in Outlook übernehmen und nicht den ganzen Bereich in Outlook einfügen.

Code:
HTMLBody = RangeToHTML(ActiveSheet, ActiveSheet.Range("A1:L100"))

Danke

Gruß Mellow
Antworten Top
#2
Moin!
Setze
.HTMLBody = RangeToHTML(ActiveSheet, Selection)

Aber Achtung!
Es muss ein zusammenhängender Bereich sein!
Außerdem sollte am Anfang überprüft werden, ob die Voraussetzungen erfüllt sind.
Mal quick & dirty:
Public Sub TableToMail()
    Dim objOutlook As Object
    Dim objMail As Object
    If TypeName(Selection) = "Range" Then
      If Selection.Areas.Count = 1 Then
        Set objOutlook = CreateObject("Outlook.Application")
        Set objMail = objOutlook.CreateItem(0)
        With objMail
            .to = ""
            .Subject = "Test " & CStr(Date)
            .HTMLBody = RangeToHTML(ActiveSheet, Selection)
            .Display    'nur Anzeigen 
    '        .Send      'direkt senden 
        End With
        Set objMail = Nothing
        Set objOutlook = Nothing
      End If
    End If
End Sub

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#3
Guten Morgen,

Ich hab das mal getestet.....bekomme aber immer diese Fehlermeldung bei RangeToHTML

Siehe Bild

Gruß Mellow


Angehängte Dateien Thumbnail(s)
   
Antworten Top
#4
Die Function RangeToHTML() aus Deiner Threaderöffnung darfst Du natürlich nicht löschen!
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#5
Morgen,

hat funktioniert ,Danke


Gruß Mellow
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste