MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 16.05.2019, 14:02   #1
blownlightbulb
Neuer Benutzer
Neuer Benutzer
Standard VBA - Mail aus Excel per VBA

Hallo,

ich möchte aus einem Makro heraus eine Mail verschicken die etwas vorgefertigetn Text und Zelleninhalt enthält.
Am liebsten hätte ich es, wenn ich die Spalten fest deklarieren kann und dann alle Zeilen die da sind mitgeschickt werden (al Tabelle).

Ich habe es schon geschafft, das in der Mail der Inhalt einer Zelle steht, aber einen Bereich bekomme ich nicht hin.

Code:

With objMail
    .To = "xyz@abc.de"
    .Subject = "XXX"
    .Body = "Guten Morgen, hier die aktuellen Daten: " + vbCrLf + vbCrLf + vbCrLf + Sheets(2).Range("F1", "Q2") + "Test"

End With
Am liebsten wäre mir wenn die Range mit xlDown die Zeilen markiert, aber ich weiß nicht wie.

Vielen Dank schonmal für eure Hilfe
blownlightbulb ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.05.2019, 14:17   #2
Storax
MOF Koryphäe
MOF Koryphäe
Standard

Hier steht IMHO alles, was man dazu wissen muss

__________________

How do I ask a good question?

In a lot questions the OP has no idea what they're doing, they've found code on the internet, mixed it around and got something. They don't understand why that something doesn't work.
Usually, in these questions, the original poster is rather clueless, helping them on the question is only spoon feeding them, and there is little to no chance the question will help anyone in the future.

Press any key to continue - or any other key to abort.

Spoon feeding: provide (someone) with so much help or information that they do not need to think for themselves.
Storax ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.05.2019, 14:37   #3
Nepumuk
MOF Koryphäe
MOF Koryphäe
Standard

Hallo,

teste mal:

Option Explicit

Public Sub Mail()
    Dim objOutlook As Object, objMail As Object
    Dim strBody As String
    With ActiveSheet
        strBody = RangeToHTML(.Name, .Range(.Cells(1, 6), .Cells(.Cells(.Rows.Count, 6).End(xlUp).Row, 17)).Address)
    End With
    Set objOutlook = CreateObject(Class:="Outlook.Application")
    Set objMail = objOutlook.CreateItem(0)
    With objMail
        .To = "xyz@abc.de"
        .Subject = "XXX"
        .HTMLBody = "Guten Morgen, hier die aktuellen Daten: " & vbCrLf & vbCrLf & vbCrLf & strBody
        Call .Display 'anzeigen
        'Call .Send 'senden
    End With
    Set objMail = Nothing
    Set objOutlook = Nothing
End Sub

Private Function RangeToHTML(ByVal pvstrWorksheetName As String, ByVal pvstrRangeAddress As String) As String
    Const ForReading As Long = 1
    Const TristateUseDefault As Long = -2
    Dim objFileSystemObject As Object, objFile As Object
    Dim objTextStream As Object, objPublishObject As PublishObject
    Dim strPath As String, strTemp As String
    strPath = Environ$("Tmp") & "\Mail_" & Format$(Now, "dd-mm-yyyy_Hh-Nn-Ss") & ".htm"
    Set objPublishObject = ThisWorkbook.PublishObjects.Add( _
        SourceType:=xlSourceRange, _
        Filename:=strPath, _
        Sheet:=pvstrWorksheetName, _
        Source:=pvstrRangeAddress, _
        HtmlType:=xlHtmlStatic)
    Call objPublishObject.Publish(Create:=True)
    Set objFileSystemObject = CreateObject(Class:="Scripting.FileSystemObject")
    Set objFile = objFileSystemObject.GetFile(strPath)
    Set objTextStream = objFile.OpenAsTextStream(iomode:=ForReading, Format:=TristateUseDefault)
    strTemp = objTextStream.ReadAll
    RangeToHTML = Replace(Expression:=strTemp, Find:="align=center x:publishsource=", _
        Replace:="align=left x:publishsource=")
    objTextStream.Close
    Call Kill(PathName:=strPath)
    Set objTextStream = Nothing
    Set objFile = Nothing
    Set objFileSystemObject = Nothing
    Set objPublishObject = Nothing
End Function

__________________

Gruß
Nepumuk

Geändert von Nepumuk (16.05.2019 um 14:54 Uhr).
Nepumuk ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.05.2019, 15:11   #4
blownlightbulb
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

@ Storax - danke, da muss ich mich mal reinfuxen

@ Nepumuk - wenn ich das richtig verstehe, ist das ja genau, das was ich will - vielen Dank, aber leider bekomme ich einen Fehler:

Anwendung- oder objektdefinierter Fehler

Set objPublishObject = ThisWorkbook.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=strPath, _
Sheet:=pvstrWorksheetName, _
Source:=pvstrRangeAddress, _
HtmlType:=xlHtmlStatic)

Die Function RangeToHTML verstehe ich leider gar nicht, das ist mir zu hoch
blownlightbulb ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.05.2019, 15:42   #5
Nepumuk
MOF Koryphäe
MOF Koryphäe
Standard

Hallo,

ich kann den Fehler nicht nachvollziehen, denn der Code läuft bei mir ohne Probleme. Lade mal deine Mappe hoch.

__________________

Gruß
Nepumuk
Nepumuk ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.05.2019, 16:00   #6
blownlightbulb
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Ahhhhhhh

habe gerade die Datei fertig gemacht zum hochladen und noch mal probiert und es geht.
ABER: nur wenn ich das Makro in der Datei speichere, nicht wenn es in der personal.xlsb ist.
Da ich die Datei aber jeden Tag überschreibe muss ich es ja in der personal Datei speichern.

Woran kann das liegen?
blownlightbulb ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.05.2019, 16:42   #7
Luschi
MOF Koryphäe
MOF Koryphäe
Standard

Hallo blownlightbulb,

in diesem Fall ändere die folgende Vba-Zeile von

Set objPublishObject = ThisWorkbook.PublishObjects.Add( _
in
Set objPublishObject = ActiveWorkbook.PublishObjects.Add( _
ab und die E-Mailerstellung klappt.

Gruß von Luschi
aus klein-Paris
Luschi ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 16.05.2019, 19:23   #8
Storax
MOF Koryphäe
MOF Koryphäe
Standard

Wie ich gesagt habe, steht alles im Link oben, hier wahrscheinlich Dein Anwendungsfall.

Aber, so wie es aussieht, geht das über Deinen Kopf, da empfehle ich hier alles durchzuarbeiten.

__________________

How do I ask a good question?

In a lot questions the OP has no idea what they're doing, they've found code on the internet, mixed it around and got something. They don't understand why that something doesn't work.
Usually, in these questions, the original poster is rather clueless, helping them on the question is only spoon feeding them, and there is little to no chance the question will help anyone in the future.

Press any key to continue - or any other key to abort.

Spoon feeding: provide (someone) with so much help or information that they do not need to think for themselves.
Storax ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 17.05.2019, 15:05   #9
blownlightbulb
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

@ Luschi vielen Dank - funktioiert

@ Storax - danke für den Link - da werde ich mich in den nächten Wochen durcharbeiten


letzte Frage: kann ich die Formatiereung noch übernehmen? also, dass eine Tabelle eingefügt wird - wäre besser lesbar


Vielen Dank an alle und ein schönes Wochenende
blownlightbulb ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:26 Uhr.



Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.