2016-03-03 119 views
1

我试图写在Excel中的VBA代码,将创建一个包含Outlook邮件:Excel的VBA到Outlook:错误类型不匹配

  1. 文本在身体
  2. 签名在底部。

下面是我写的代码。它一直在工作,直到我将Excel Table对象添加到消息正文中。它提出了一条错误消息,说:

Run-time error: error type 13, Type Mismatch".

有人可以帮我下面的代码?

Sub send() 
    Dim OApp As Object, OMail As Object, signature As String 
    Dim TOEMAIL As Range 
    Dim CCMEMAIL As Range 
    Dim SUBJECT As Range 
    Dim Workbook As Range 
    Dim Table As Range 


    Set TOEMAIL = Sheets("Macro").Range("D6") 
    Set CCEMAIL = Sheets("Macro").Range("D7") 
    Set SUBJECT = Sheets("Macro").Range("D8") 
    Set Workbook = Sheets("Macro").Range("D5") 
    Set Table = Sheets("Sheet1").Range("B7:B17") 

    Set OApp = CreateObject("Outlook.Application") 
    Set OMail = OApp.CreateItem(0) 
    With OMail 
    .Display 
    End With 

    signature = OMail.body 
    With OMail 
    .To = TOEMAIL 
    .CC = CCEMAIL 
    .SUBJECT = SUBJECT 
    .Attachments.Add (Workbook) 
    .body = "Hello, this is a test." & vbNewLine & Table & vbNewLine & signature & vbNewLine 
    End With 
    Set OMail = Nothing 
    Set OApp = Nothing 
End Sub 
+1

我建议看看这个网站:http://www.rondebruin.nl/win/s1/outlook/mail.htm –

回答

0

MailItem.Body property expect a string。您正试图连接几个字符串和一个Range对象。您有责任从该表中提取相关数据并将其表示为字符串。

您最好创建一个HTML表并设置MailItem.HTMLBody属性。

+0

谢谢大家。鉴于我还在学习VBA,有没有人有兴趣向我展示如何以少量费用来做这件事?......说10美元。让我知道。请给我发电子邮件给我你的电子邮件地址,我会发给你我设置的文件。谢谢! – RobL