Windows-Server-2016

如何從 Windows Server 2016 中的任務計劃程序執行 VBA 宏?

  • June 21, 2021

我有一個 VBA 宏,用於每天提取一些數據。宏沒有任何互動式組件,例如消息框、自定義輸入或輸入框。它不需要任何使用者輸入,它只從數據庫下載一些數據並生成一些 CSV。

我的任務是使用 Windows 的任務計劃程序自動提取它。

我嘗試創建一個 VBS 應用程序來執行它,如下所示:

https://stackoverflow.com/questions/58139154/running-an-excel-macro-from-task-scheduler

它沒有用。

我創建了自己的 C# 應用程序來執行它,但沒有用。

在這一點上,我被卡住了,因為如果我手動執行 VBS 應用程序和 C# 應用程序可以正確執行宏。

我嘗試了以下組合:

  • 僅在使用者登錄時執行。->成功
  • 執行使用者是否登錄。->失敗
  • 執行使用者是否登錄。另外,以最高權限執行。->失敗
  • 執行使用者是否登錄。另外,不要儲存密碼… ->失敗
  • 執行使用者是否登錄。另外,不要儲存密碼…並以最高權限執行 ->失敗
  • 執行使用者是否登錄。另外,以最高權限執行並隱藏。->失敗
  • 執行使用者是否登錄。另外,不要儲存密碼…和 ​​Hidden -> Failed
  • 執行使用者是否登錄。另外,不要儲存密碼…,以最高權限執行並 Hidden -> Failed

另外,我也嘗試安排 VBA 宏,沒有區別(這是我的第一次嘗試)。

此外,正如我在評論中強調的那樣。我已經使用我的管理員帳戶和已經是某些計劃任務的服務帳戶進行了測試。

此外,命令看起來像這些:

  • C:\...\MacroRunner.exe
  • C:\...\MacroRunner.vbs

兩者都在 CMD 中執行。另外,我嘗試手動執行它們中的每一個。我沒想到只有預定的時間執行了它。

知道我做錯了什麼嗎?謝謝你的時間。

PS:

如果您閱讀 StackOverflow 問題,則該人面臨同樣的問題,但他正在尋找程式碼。我個人確信這是伺服器問題,而不是程式碼問題。

此外,這不是您可以找到類似主題的第一個地方:

https://www.thespreadsheetguru.com/blog/how-to-automatically-run-excel-vba-macros-daily

我找到瞭如何解決我的問題。**squillman**在 Super User 中找到了這個舊答案:

https://superuser.com/a/579901

  1. 打開組件服務(開始 -> 執行,輸入 dcomcnfg)
  2. 向下鑽取組件服務 -> 電腦 -> 我的電腦,然後點擊 DCOM 配置
  3. 右鍵點擊 Microsoft Excel 應用程序並選擇屬性
  4. 在身份選項卡中選擇此使用者並輸入互動式使用者帳戶(域或本地)的 ID 和密碼,然後點擊確定

現在,我還需要做什麼?

  1. 使用我在步驟 4 中配置的相同帳戶配置計劃任務。我嘗試使用服務帳戶並失敗。
  2. 執行使用者是否登錄。

在此之後,我能夠正常執行它。

謝謝@Massimo 的提示。

我嘗試了以下組合:

  • 僅在使用者登錄時執行。-> 成功。

如果程序僅在使用者登錄時工作,則意味著它需要一個互動式會話。

它在執行時實際上不顯示任何視窗的事實並不重要:如果程式碼中的某些內容需要互動式會話(即使您不知道)並且無法獲得它,它將失敗。由於 VBA 宏設計為在 Office 應用程序中執行(在正常情況下始終具有 UI),因此這一點也不奇怪;除非原始編碼器採取額外步驟以允許宏以非互動方式執行,否則這是預期的行為。

如果沒有實際的應用程式碼,我們將無法為您提供任何幫助;我建議您在 StackOverflow 上詢問如何確保 VBA 宏可以在沒有互動式會話的情況下執行。

引用自:https://serverfault.com/questions/1043759