2017-08-30 32 views
0

我剛剛升級到windows 10.這個版本的outlook我已經啓用了信任中心的宏,但是它限制了我從outlook運行vba。當我運行任務調度程序並從bat文件訪問數據庫運行時,訪問也會遇到問題。一個autoexec開始執行,我告訴系統關閉outlook,但不會關閉outlook的當前實例。這是我正在使用的代碼。Outlook自動關閉Access數據庫的問題

Public Function OutlookClose1() 
On Error Resume Next 
strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
Set colProcessList = objWMIService.ExecQuery _ 
("Select * from Win32_Process Where Name = 'Outlook.exe'") 
For Each objProcess In colProcessList 
Set objOutlook = GetObject(Class:="Outlook.application") 
objOutlook.Quit 
Next 

End Function 
Public Function OutlookClose2() 
Dim objAppOL As Outlook.Application 
On Error Resume Next 
Set objAppOL = GetObject(Class:="Outlook.application") 
    objAppOL.Quit 
Set objAppOL = Nothing 
Exit Function 
End Function 

我試了outlookclose1和2,都沒有工作。任何人都有建議嗎?

另外,當從vba編輯器運行outlookclose1時,它會關閉。它需要交換離線,這是我不想要的。但是從運行訪問數據庫的bat文件中運行autoexec並不能關閉outlook。

回答

0

即使本地用戶帳戶相同,任務調度程序也作爲與當前登錄用戶不同的安全上下文中的服務運行。 COM系統拒絕在不同安全上下文中運行的進程之間封送調用。

+0

我可以在Dcom做些什麼來解決這個問題,或者我可以做些什麼來解決這個問題或者我需要告訴域管理員?必須有一個域或gpedit修復沒有? – Atlas80808

+0

你可以做的事情不多 - Outlook(像任何其他Office應用程序)不能從任務計劃程序等服務中使用。 –

0

我有office 2013和windows 10.我可以在Windows 7和任務調度程序上使用上面的代碼。我處於某個政策的域名,我無法更改,但我沒有管理員權限。在家裏不在域上我也可以使用該代碼。據說我可以至少終止Outlook的訪問權限並完成關閉Outlook會話的工作,所以當autoexec在訪問數據庫中運行時,它會關閉Outlook,然後運行報告併發送創建對象Outlook.Application併發送電子郵件沒問題。這是我如何終止代碼。原因是我不希望多個Outlook會話運行。

Public Function OutlookClose1() 
Dim objOutlook As Outlook.Application 

delay = 30000 'delay in milliseconds to let Outlook close gracefully 
strComputer = "." 
Set objWMIService = GetObject("winmgmts:" _ 
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 

Set colProcessList = objWMIService.ExecQuery _ 
("Select * from Win32_Process Where Name = 'Outlook.exe'") 
For Each objProcess In colProcessList 
objProcess.Terminate 
Next 
Set objWMIService = Nothing 
Set objOutlook = Nothing 
Set colProcessList = Nothing 
End Function