Formatierte Zahlen in Mail
11.06.2013 01:47:47
Erich
Hi Stefan,
wonach genau fragst du jetzt eigentlich?
"Ich möchte den Zellen F22, H22, J22 und l22 verschiedene Formatierungen zuweisen."
Warum tust du das nicht gleich einfach in Excel?
Das hat mit der Prozedur SendMail gar nichts zu tun.
Wie du mit VBA Zellen formatierst, kannst du einfach per Makroaufzeichnung ermitteln.
Oder sind die betreffenden Zellen in Excel bereits wie gewünscht formatiert,
und du willst nur, dass die Werte auch in der Mail im richtigen Format erscheinen?
Dazu kannst/musst du den Zellen keine Formate mehr zuzuweisen.
Nebenbei:
Ist es Absicht, dass die Leerzeichen nach und nicht vor den "eckigen Klammern zu" stehen?
Was du mit deinen Formatangaben "( ; %; 0 und Minuswerte)" genau meinst, kann ich nur raten.
Unter , % und 0 kann ich mir etwas vorstellen, unter "Minuswerte" nicht. Was soll das für ein Format sein?
So sollte es in etwa gehen:
Option Explicit
Sub sendMail()
Dim mePDFD As String
Dim MyOutApp As Object, MyMessage As Object
Dim strF As String, strH As String, strJ As String, strL As String
ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\" & Range("B27") & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=False, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
mePDFD = ThisWorkbook.Path & "\" & Range("B27") & ".pdf"
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.to = Range("n3")
.CC = Range("n2")
.Subject = Range("B2") 'Betreffzeile
strF = " [ " & Format(Range("f22"), "#,##0.00 ") & "] "
strH = " [ " & Format(Range("h22"), "0.0%") & "] "
strJ = " [ " & Format(Range("j22"), "0") & "] "
strL = " [ " & Format(Range("l22"), "#,##0.00") & "] "
.Body = Range("b25") & vbCr & vbCr _
& Range("e9") & strF & vbCr & vbCr _
& Range("g9") & strH & vbCr & vbCr _
& Range("i9") & strJ & vbCr & vbCr _
& Range("k9") & strL & vbCr
.Attachments.Add mePDFD
.Display
'.Send
Kill mePDFD
End With
End Sub
Einfacher ist es, wenn die Werte der vier Zellen in der Mail genau so aussehen sollen
wie sie bereits im Tabellenblatt angezeigt werden:
Sub sendMail2()
Dim mePDFD As String
Dim MyOutApp As Object, MyMessage As Object
ThisWorkbook.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ThisWorkbook.Path & "\" & Range("B27") & ".pdf", _
Quality:=xlQualityStandard, IncludeDocProperties:=False, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
mePDFD = ThisWorkbook.Path & "\" & Range("B27") & ".pdf"
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.to = Range("n3")
.CC = Range("n2")
.Subject = Range("B2") 'Betreffzeile
.Body = Range("b25") & vbCr & vbCr _
& Range("e9") & " [ " & Range("f22").Text & "] " & vbCr & vbCr _
& Range("g9") & " [ " & Range("h22").Text & "] " & vbCr & vbCr _
& Range("i9") & " [ " & Range("j22").Text & "] " & vbCr & vbCr _
& Range("k9") & " [ " & Range("l22").Text & "] " & vbCr
.Attachments.Add mePDFD
.Display
'.Send
Kill mePDFD
End With
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich