【发布时间】:2021-05-31 08:28:39
【问题描述】:
我想发送一封带有附件的电子邮件。
我使用以下代码创建了一个 ZIP 文件夹:
Sub ZipFolder(folderToZipPath As Variant, zippedFileFullName As Variant)
Dim ShellApp As Object
'Create an empty zip file
Open zippedFileFullName For Output As #1
Print #1, Chr$(80) & Chr$(75) & Chr$(5) & Chr$(6) & String(18, 0)
Close #1
'Copy the files & folders into the zip file
Set ShellApp = CreateObject("Shell.Application")
ShellApp.Namespace(zippedFileFullName).CopyHere ShellApp.Namespace(folderToZipPath).items
'Zipping the files may take a while, create loop to pause the macro until zipping has finished.
On Error Resume Next
Do Until ShellApp.Namespace(zippedFileFullName).items.Count = ShellApp.Namespace(folderToZipPath).items.Count
Application.Wait (Now + TimeValue("0:00:01"))
Loop
On Error GoTo 0
End Sub
通过以下内容,我从 Outlook 收到附件仍处于打开状态的消息。我必须在它发送电子邮件之前手动确认。
会不会是宏创建的ZIP文件夹没有关闭?
' SET Outlook APPLICATION OBJECT.
Dim objOutlook As Object
Set objOutlook = CreateObject("Outlook.Application")
' CREATE EMAIL OBJECT.
Dim objEmail As Object
Set objEmail = objOutlook.CreateItem(olMailItem)
With objEmail
.to = xxx
.cc = xxx"
.Subject = "subject"
.Body = "body"
.Display
.Attachments.Add (Path & PDF)
.Attachments.Add (Path & zip)
.Send
End With
【问题讨论】:
-
文件压缩完成后,在您的
ZipFolder程序中尝试Set ShellApp = Nothing。 -
这不起作用..