【问题标题】:Excel 2010 VBA .send errorExcel 2010 VBA .send 错误
【发布时间】:2013-04-12 15:29:17
【问题描述】:

我有以下代码,在这个之前的 10 个宏可以正常工作(我使用调用 x,调用 Y 宏),但是这个不想工作。

Sub Send_Tips()
Application.DisplayAlerts = False
Dim Email_Subject, Email_Send_From, Email_Body As String, i As Integer
Dim Mail_Object, nameList As String, o As Variant
    Email_Send_From = ""
     For i = 1 To 1 'use cells 1 to 1 in column "A" where names are stored
If Sheets("Tips").Range("A1").Value <> "" Then
    nameList = nameList & ";" & Sheets("Tips").Range("A" & i).Value
End If
Next
    Set Mail_Object = CreateObject("Outlook.Application")
    With Mail_Object.CreateItem(o)
        .Subject = "Dealer Action Plans"
        .To = nameList
        .Body = "Please find attached the latest version of the Dealer Action Plans." 
        'Make a copy of the active sheet and save it to
 'a temporary file
 Worksheets("Tips").Activate
ActiveSheet.Copy
Set wb = ActiveWorkbook
Filename = "Tips.pdf"
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

Worksheets("Tips").ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:="c:\aaaWork\Tips.pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False

'    ActiveWorkbook.SaveAs Filename:="C:\aaaWork\NC1.PDF", FileFormat:=17

        .Attachments.Add "C:\aaaWork\Tips.PDF"
        .send 'Will send straight away use .display to send manually
       ActiveWorkbook.Close Saved = True
        Kill "C:\aaaWork\Tips.PDF"
End With
    Application.DisplayAlerts = True
End Sub

当我收到以下错误信息时 .send '将立即发送使用 .display 手动发送 被跑了。 运行时错误“2147467259 (80004005)”: Outlook 无法识别一个或多个名称

工作表名称提示确实存在,有什么想法吗?

谢谢!

【问题讨论】:

  • 您的变量未正确声明。这可能会帮助您调试。
  • 如果将.send改为.display,错误(或类似错误)是否仍然存在?
  • 另外,请尝试将创建临时文件的代码块(Worksheets("Tips").Activate ... OpenAfterPublish:=False 移动到 之前 Set Mail_Object...
  • 显示效果很好,但移动方块没有帮助!
  • 已解决:显示功能显示电子邮件地址对 Excel 不可见,已修复此问题并且一切正常。感谢您的建议!

标签: excel vba email outlook


【解决方案1】:

只是为了跟进我提到的关于变量声明的内容......当你这样做时:

Dim Email_Subject, Email_Send_From, Email_Body As String, i As Integer

您没有为Email_Subject, Email_Send_From 指定类型,因此这些被视为类型变体。与下一行的Mail_Object 相同:

Dim Mail_Object, nameList As String, o As Variant

根据下面的内容重写这些行,以便正确声明您的字符串变量:

Dim Email_Subject$, Email_Send_From$, Email_Body$, i As Integer Dim Mail_Object$, nameList As String, o As Variant

虽然这些不会导致这个特定的错误,但如果变量设置不正确,它们肯定会导致其他错误(例如,Variant 可能包含一个对象或数组,而不是其余代码所期望的字符串等。 )

否则,我将首先清理上面的代码,然后用.Display 替换.Send 进行故障排除并确保在电子邮件中正确设置所有内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    • 2019-01-10
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多