2016-09-21 25 views
0

我通過VBA生成Outlook電子郵件時遇到問題。問題是,當VBA將信息從Excel工作表導出到Outlook時,Excel工作表上的數字將始終使用逗號轉換爲數字,而不是Excel中的原始格式。請參閱下面的代碼。我需要在列D中的一個單元格中去掉逗號。如果d是123456,在Outlook中,它會顯示123,456,但我不想使用逗號。VBA到Outlook問題 - 不希望帶逗號的數字

謝謝!

    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

我假設你在Excel中使用逗號格式化單元格A6:E66,並且希望它在Excel中繼續以這種方式進行格式化 - 你只是不希望它在電子郵件中以這種方式格式化? – YowE3K

+2

我剛剛測試[RangetoHTML](https://msdn.microsoft.com/en-us/library/ff519602(v = office.11​​).aspx)和@ YowE3K是正確的。 'RangetoHTML'精確地模擬了範圍的數字格式。 – 2016-09-21 21:11:58

+0

@ThomasInzina - Ron de Bruin會想知道他爲什麼會在他的網站上獲得如此多的點擊率! (我也只是測試過。) – YowE3K

回答

1

如果您需要與在Excel逗號格式的單元格,但要在電子郵件中放置時,它使用通用格式列d,你可以嘗試使用

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 

注:此會將D1:D66中的所有單元格恢復爲宏開始時D1中存在的格式。如果各種單元格具有不同的格式,則代碼將需要更復雜一些。