Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1072to1076
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wie Zeilenumbruch bei Email-Erstellung

Wie Zeilenumbruch bei Email-Erstellung
14.05.2009 10:56:34
Lang
Hallo VBA-Spezialisten,
meinen Wunsch einen Text aus Excel via Email zu versenden ist eigentlich mit der im hiesigen Archiv gefundenen Prozedur (s. u.) erfüllt. Doch habe ich zwei Fragen:
1. Wie kann ich dabei einen Zeilenumbruch erzielen? Mit anhängen von '& VbCrLf' hatte ich keinen Erfolg.
2. Sucht sich die Prozedur das Email-Programm auf dem Rechner selbst oder gilt sie automatisch nur für Outlook?
Herzlichen Dank für Eure Bemühungen!
Liebe Grüße Klaus
------------------------------------------------------
Im Archiv gefunden:
StandardModule: basMain
Private Declare Function ShellExecute Lib "Shell32.dll" _
Alias "ShellExecuteA" (ByVal hWnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long

Private Sub Mail( _
eMail As String, _
Optional Subject As String, _
Optional Body As String)
Call ShellExecute(0&, "Open", "mailto:" + eMail + _
"?Subject=" + Subject + "&Body=" + Body, "", "", 1)
End Sub


Sub MailVersenden()
Dim rng As Range
Dim sMail As String, sSubject As String
Dim sBody As String
Dim iRow As Integer, iCol As Integer
sMail = "hans@herber.de"
sSubject = "Excel-Daten"
Set rng = Range("A1").CurrentRegion
For iCol = 1 To rng.Columns.Count
For iRow = 1 To rng.Rows.Count
sBody = sBody & rng.Cells(iRow, iCol) & " "
Next iRow
Next iCol
Call Mail(sMail, sSubject, sBody)
End Sub


13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wie Zeilenumbruch bei Email-Erstellung
14.05.2009 11:44:54
Roland
Hallo Klaus,
1. du musst den Zeilenumbruch in den String nehmen, dann klappt es:
sBody = sBody & VbCrLf & rng.Cells(iRow, iCol)
2. Es wird das auf dem Rechner eingerichtete Standard-Emailprogramm ausgeführt.
Gruß
Roland Hochhäuser
AW: Wie Zeilenumbruch bei Email-Erstellung
15.05.2009 12:44:18
Lang
Hallo Roland,
danke für Deine schnelle Antwort. Einmal hat es geklappt.
"sBody" wird mit der Testabfrage: "MsgBox "sbody = " & sBody" vor "Call Mail(sMail, sSubject, sBody)" auch richtig dargestellt. Jetzt kommt jedoch immer die Meldung: "MS-Outlook kann nicht gestartet werden. Das Befehlszeilenargument ist ungültig. Überprüfen Sie den verwendeten Befehl."
Er tritt auf, wenn in "Private Sub Mail( _ ..." Call ShellExecute(0&, "Open", "mailto:" + eMail + _
"?Subject=" + Subject + "&Body=" + Body, "", "", 1)
durchgeführt wird.
Hoffentlich kannst Du auch da helfen. Danke!
Gruß Klaus
Anzeige
AW: Wie Zeilenumbruch bei Email-Erstellung
15.05.2009 12:47:04
Lang
Hatte ich vergessen anzuhängen:

Sub MailVersenden()
Dim rng As Range
Dim sMail As String, sSubject As String
Dim sBody As String
Dim iRow As Integer, iCol As Integer
sMail = "nc-langkl7@netcologne.de"
sSubject = "Anforderung Aktivierungscode"
ActiveSheet.Unprotect
Set rng = Range("A1").CurrentRegion
For iCol = 1 To rng.Columns.count
For iRow = 1 To rng.Rows.count
sBody = sBody & vbCrLf & rng.Cells(iRow, iCol) & " "
Next iRow
Next iCol
MsgBox "sbody = " & sBody
Call Mail(sMail, sSubject, sBody)
End Sub


AW: Wie Zeilenumbruch bei Email-Erstellung
15.05.2009 17:51:40
Roland
Hallo Klaus,
den Fehler kann ich nicht reproduzieren, dein Code läuft bei mir einwandfrei. Tritt das Problem auch nach einem Rechnerneustart auf?
Gruß
Roland Hochhäuser
Anzeige
AW: Wie Zeilenumbruch bei Email-Erstellung
16.05.2009 13:32:50
Lang
Hallo Roland,
die Fehlermeldung tritt nun nicht mehr auf. Leider erfolgt jedoch kein Zeilenumbruch. Habe inzwischen auch mit anderen Beispielen erfolglos herumexperimentiert. Ich schaffe es einfach nicht einen in A1 bis A22 stehenden Text als Block in das Email-Programm einzufügen. Mit "As String" geht eine Zeile. Zu "Range" erfolgen nur Fehlermeldungen.
Als Lösung habe ich gefunden und angepasst:

Sub AktiviAnfordern()
Dim outObj As Object
Dim Mail As Object
Application.StatusBar = "Email-Programmaufruf um Aktivierungscode anzufordern..."
Set outObj = CreateObject("Outlook.application")
Set Mail = outObj.CreateItem(0)
Application.StatusBar = "Email-Programmaufruf um Aktivierungscode anzufordern..."
Mail.Subject = "Zusendung Aktivierungscode für PrüfNr.: " & [VersionPlBilAktivi]
Mail.Body = "Hinweise für Absender:" & vbCrLf & _
"Zusätzliche Mitteilungen bitte am Ende dieser Email anstelle '(keine)' eingeben." & vbCrLf &  _
_
"ÄNDERUNGEN AN DEM VORGEGEBENEM TEXT ERMÖGLICHEN KEINE BEARBEITUNG." & vbCrLf & _
"--------------------------------------------------------------------------------------------- _
---------------------------------------------" & vbCrLf & _
"Anforderung Aktivierungscode" & vbCrLf & _
"Von: " & vbCrLf & _
"Zweigstelle HS-Muster GmbH" & vbCrLf & _
"Musterstraße 8" & vbCrLf & _
"99999 Musterstadt / Deutschland" & vbCrLf & _
"Ansprechpartner:" & vbCrLf & _
"Herr Manfred Muster" & vbCrLf & _
"Tel.: 0999/9999901" & vbCrLf & _
"Email: mmuster1@.mmm.de" & vbCrLf & vbCrLf & _
"An:" & vbCrLf & _
"Zentrale MM-Muster GmbH " & vbCrLf & vbCrLf & _
"Hiermit wird der Aktivierungscode angefordert für die EDV-Umstellung" & vbCrLf & _
"-> PrüfNr.: " & [VersionPlBilAktivi] & vbCrLf & _
"-> installiert am: " & vbCrLf & _
"-> installiert für (urspr.) User: (Mustermann1) Musterfrau" & vbCrLf & _
"-> Die Richtigkeit der vorgegebenen Angaben wir bestätigt" & vbCrLf & _
"     bzw. erforderliche Änderungen sind nachfolgend aufgeführt." & vbCrLf & _
"---------------------------------------------------------------------------------------" &  _
vbCrLf & _
"Änderungen zu obigen Angaben bzw. sonstige Mitteilungen:" & vbCrLf & _
"(keine)"
Mail.To = "nc-langkl7@netcologne.de"
Mail.display
Application.StatusBar = False
Set Mail = Nothing
Set outObj = Nothing
End Sub


Zwei Dinge hätte ich gerne damit zusätzlich gelöst:
1. Keine Anbindung an "Set outObj = CreateObject("Outlook.application"),
also Unabhängigkeit vom genutzten Email-Programm und
2. beim VERKETTEN von Text mit einem Datumsfeld kommt immer der
Zahlenwert des Datums und nicht das Datumsformat. Was muß ich da ändern?
Vielen Dank vorab!
Gruß Klaus

Anzeige
AW: Wie Zeilenumbruch bei Email-Erstellung
16.05.2009 15:29:03
Lang
Hallo Roland,
zu "2. beim VERKETTEN von Text mit einem Datumsfeld ..." hat sich erledigt, da ich die richtige Formel gefunden habe.
Gruß Klaus
AW: Wie Zeilenumbruch bei Email-Erstellung
16.05.2009 22:44:34
Roland
Hallo Klaus,
mit deinem neuen Code wird immer nur Outlook gestartet, wenn du unabhängig davon das jeweils auf dem Rechner installierte Standard-Emailprogramm starten willst, dann bleibe beim alten Code.
2. Mir ist ehrlich gesagt schleierhaft, was nicht klappt. Lade doch einfach mal die Tabelle, mit der das nicht klappt, hoch, und ich sehe mir die Sache mal an.
Gruß
Roland Hochhäuser
AW: Wie Zeilenumbruch bei Email-Erstellung
18.05.2009 13:41:45
Lang
Hallo Roland,
auf die Tabelle kann zugeriffen werden über den Link https://www.herber.de/bbs/user/61894.xls .
Sie wurde in "61894.xls" umbenannt.
Vielen Dank für Deine Mühen!
Gruß Klaus
Anzeige
AW: Wie Zeilenumbruch bei Email-Erstellung
18.05.2009 16:31:45
Roland
Hallo Klaus,
das hier müsste gehen:
Option Explicit
Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long

Private Sub Mail( _
eMail As String, _
Optional Subject As String, _
Optional Body As String)
Call ShellExecute(0&, "Open", "mailto:" + eMail + _
"?Subject=" + Subject + "&Body=" + Body, "", "", 1)
End Sub


Sub MailVersenden()
Dim rng As Range
Dim sMail As String, sSubject As String
Dim sBody As String
Dim iRow As Integer, iCol As Integer
sMail = "nc-langkl7@netcologne.de"
sSubject = "Anforderung Aktivierungscode"
ActiveSheet.Unprotect
Set rng = Range("A1").CurrentRegion
For iCol = 1 To rng.Columns.Count
For iRow = 1 To rng.Rows.Count
sBody = sBody & vbCrLf & rng.Cells(iRow, iCol).Value
Next iRow
Next iCol
sBody = Application.WorksheetFunction.Substitute(sBody, vbCrLf, "%0D%0A")
Call Mail(sMail, sSubject, sBody)
End Sub


Rückmeldung wäre schön.
Gruß
Roland Hochhäuser

Anzeige
AW: Wie Zeilenumbruch bei Email-Erstellung
19.05.2009 10:42:34
Lang
Roland - Tausend Dank!
Es funktioniert wie gewollt! Jetzt kann ich am Donnerstag bis Mitte Juni beruhigter in Urlaub fahren.
Alles Gute!
Gruß Klaus
AW: Wie Zeilenumbruch bei Email-Erstellung
19.05.2009 12:44:25
Roland
Na dann leg Dich mal in die Sonne und lass es Dir gut gehen ;-))
Roland Hochhäuser
AW: Wie Zeilenumbruch bei Email-Erstellung
20.05.2009 09:28:33
Klaus
Hallo Roland,
ein "Problemchen" gibt es noch. Sobald in einer Textzeile z.B. zwei Namen mit "&" verbunden sind, werden alle nachfolgenden Zeilen nicht in das Email-Programm übernommen. Ersetze ich es mit "u." gibt es keine Probleme. Aber die Chefs wollen den Firmennamen richtig dargestellt sehen. Also nicht "Hermann1 u. Hermann2" sondern "Hermann1 & Hermann2".
Vielleicht hast Du eine Lösung? Hat aber Zeit bis Mitte Juni, denn jetzt wird abgeschaltet.
Gruß Klaus
Anzeige
AW: Wie Zeilenumbruch bei Email-Erstellung
20.05.2009 10:51:02
Roland
Hallo Klaus,
dann ergänze so:
. . .
sBody = Application.WorksheetFunction.Substitute(sBody, vbCrLf, "%0D%0A")
sBody = Application.WorksheetFunction.Substitute(sBody, "&", "%26")
Call Mail(sMail, sSubject, sBody)
Gruß
Roland Hochhäuser

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige