VBA到Outlook问题 - 不要让数字与逗号

时间:2016-09-21 20:54:07

标签: excel vba excel-vba outlook

我在通过VBA生成Outlook电子邮件时遇到问题。问题是当VBA将Excel工作表中的信息导出到Outlook时,Excel工作表上的数字将始终用逗号转换为数字,而不是Excel中的原始格式。请参阅以下代码。我需要在D列的一个单元格中删除逗号。如果d是123456,在Outlook中,它将显示123,456,但我不想要逗号。

谢谢!

                    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 个答案:

答案 0 :(得分: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中存在的格式。如果各种单元格具有不同的格式,则代码需要更复杂一些。