2016-09-21 5 views
0

Ich habe ein Problem mit der Generierung von Outlook-E-Mails über VBA. Das Problem ist, dass, wenn der VBA Informationen aus dem Excel-Blatt nach Outlook exportiert, die Zahlen auf dem Excel-Blatt immer in Zahlen mit Kommas übersetzt werden, anstatt ihre ursprüngliche Formatierung in Excel. Bitte beachten Sie die Codes unten. Ich muss Komma in einer Zelle in Spalte D loswerden. Wenn d 123456 ist, wird in Outlook 123456 angezeigt, aber ich möchte das Komma nicht.VBA zu Outlook Problem - Ich will keine Nummer mit Komma

Danke!

    dim a , b, c, d, e as integer 

        ActiveSheet.Range("A6").Value = a 
        ActiveSheet.Range("B6").Value = b 
        ActiveSheet.Range("C6").Value = c 
        ActiveSheet.Range("D6").Value = d 
        ActiveSheet.Range("E6").Value = e 

        Set msg_range = ActiveSheet.Range("A1", "E66") 
        Set MItem = OutlookApp.CreateItem(0) 
        With MItem 
         .To = toEmails 
         .CC = ccEmails 
         .Subject = email_subject 
         .HTMLBody = RangetoHTML(msg_range) & "<IMG SRC=""signatures.png"">" 
         .Display 
        End With 
+1

Ich nehme an, Sie haben Zellen A6: E66 mit Kommata in Excel formatiert, und Sie möchten, dass es weiterhin so in Excel formatiert wird - Sie wollen es einfach nicht so in der E-Mail formatiert? – YowE3K

+2

Ich habe gerade [RangetoHTML] getestet (https://msdn.microsoft.com/en-us/library/ff519602 (v = office.11) .aspx) und @ YowE3K ist korrekt. 'RangetoHTML' imitiert exakt das Zahlenformat des Bereichs. –

+0

@ThomasInzina - Ron de Bruin wird sich wundern, warum er so viele Hits auf seiner Website bekommt! (Ich habe es gerade auch getestet.) – YowE3K

Antwort

1

Wenn Sie die Zellen mit Komma in Excel formatiert haben müssen, wollen aber Standardformat für Spalte D verwenden, wenn es in der E-Mail platzieren, könnten Sie versuchen

dim a , b, c, d, e as integer ' Note: This command is only declaring e to be integer 
           '  a, b, c and d are being declared as Variant 
Dim oldFormat As String 

ActiveSheet.Range("A6").Value = a 
ActiveSheet.Range("B6").Value = b 
ActiveSheet.Range("C6").Value = c 
ActiveSheet.Range("D6").Value = d 
ActiveSheet.Range("E6").Value = e 

Set msg_range = ActiveSheet.Range("A1", "E66") 

oldFormat = ActiveSheet.Range("D1").NumberFormat 
ActiveSheet.Range("D1:D66").NumberFormat = "General" 

Set MItem = OutlookApp.CreateItem(0) 
With MItem 
    .To = toEmails 
    .CC = ccEmails 
    .Subject = email_subject 
    .HTMLBody = RangetoHTML(msg_range) & "<IMG SRC=""signatures.png"">" 
    .Display 
End With 

ActiveSheet.Range("D1:D66").NumberFormat = oldFormat 

Hinweis verwendet: Diese setzt alle Zellen in D1: D66 zurück auf das Format, das zu Beginn des Makros in D1 vorlag. Wenn verschiedene Zellen unterschiedliche Formate haben, muss der Code etwas komplizierter sein.