我在Access 2007中打开一个表单,在Outlook打开时打开,以下代码在Form_Load()
事件中:
Dim objOL As New Outlook.Application
Dim objMail As MailItem
Set objOL = New Outlook.Application
Set objMail = objOL.CreateItem(olMailItem)
msg = "This is a test"
bdy = "<p style='font-family: Calibri; font-size:11pt'>This is just a test</p>"
rec = "me@myemail.com"
With objMail
.To = rec
.Subject = msg
.HTMLBody = bdy
.Display
.Send
End With
Set objMail = Nothing
Set objOL = Nothing
Application.Quit
代码有效,意味着发送电子邮件并关闭Access。 MSACCESS.EXE进程从Windows任务管理器(Windows 7)中消失,但OUTLOOK.EXE进程保持打开状态,CPU处于25%,直到内存使用量达到约500MB。此时,进程的CPU使用率降至0%但不会退出。我让它过夜,这个过程永远不会退出。
经过一些测试,似乎问题是我从Windows任务计划程序启动的批处理文件中启动Access。批处理文件包含:
`Start "C:\Program Files (x86)\Microsoft Office\Office12\MSAccess.exe" c:\myDb.accdb`
如果我只是双击.bat文件,或手动打开.accdb文件,则OUTLOOK.EXE将与MSACCESS.EXE一起关闭
我在这里缺少什么?我遇到的大多数示例代码看起来都像我的代码。
更新
对于每个用户tbur
,解决方案是“在任务计划程序中,确保在”常规“选项卡下,”只有在用户登录时才运行“并且”选中了以最高权限运行“。 ”
不是我想要的解决方案,但确实解决了问题。现在的问题是运行此代码的Windows 7 PC将在Windows更新后重新启动,并且大多数任务计划在半夜运行。
答案 0 :(得分:1)
objOL.Quit
将objOL
设置为Nothing
只会释放引用,即切断objOL
与Outlook应用程序之间的关系;它不会关闭应用程序。
答案 1 :(得分:1)
尝试此操作(在代码末尾):
objOL.Quit