【发布时间】:2015-07-15 06:29:03
【问题描述】:
我在互联网某处找到了这段代码,附在代码的末尾。它复制所需的表格,将其附加到电子邮件中,然后发送。
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim Sourcewb As Workbook
Dim Destwb As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim OutApp As Object
Dim OutMail As Object
Set Sourcewb = ActiveWorkbook
ActiveSheet.Copy
Set Destwb = ActiveWorkbook
With Destwb
If Val(Application.Version) < 12 Then
FileExtStr = ".xls": FileFormatNum = -4143
Else
FileExtStr = ".xlsx": FileFormatNum = 51
End If
End With
TempFilePath = Environ$("temp") & "\"
TempFileName = "Payments due in " & Format(DateAdd("m", 1, Now), "mmm-yyyy")
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With Destwb
.SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
On Error Resume Next
With OutMail
.To = "Fadel@wataniya.ps"
.CC = ""
.BCC = ""
.Subject = "Payments due in " & Format(DateAdd("m", 1, Now), "mmm-yyyy")
.Body = "FYI"
.Attachments.Add Destwb.FullName
.Send
End With
On Error GoTo 0
.Close savechanges:=False
End With
Kill TempFilePath & TempFileName & FileExtStr
Set OutMail = Nothing
Set OutApp = Nothing
当我尝试再次运行代码(在同一个会话中)而不重新启动 Outlook 时,会弹出以下错误:
runtime error,
automation error,
system call failed,
并且调试器会高亮显示这行代码
Set OutApp = CreateObject("Outlook.Application")
它说明了一个被阻止的对象。
如何在不重新启动 Outlook 的情况下重复多次?
【问题讨论】:
-
在你
Set OutApp = Nothing之前,尝试做OutApp.Quit。