首先答案,這聽起來像這樣的問題:
我不能勾選「運行使用是否登錄或不」,因爲我 沒有足夠的權限
......這是由於您沒有管理員權限,因此您試圖在計算機上創建計劃任務。如果您是管理員,請以管理員身份運行任務管理器,或以具有管理員權限的用戶身份運行。
假設您符合管理權限標準,您可以打開Excel工作簿並使用PowerShell執行宏。使用下面的代碼創建並保存PowerShell腳本。修改爲適合您的工作簿路徑,函數名稱和參數。然後創建一個計劃任務來調用PowerShell腳本。
您還需要確保Excel工作簿的位置位於「可信位置」。在Excel中,轉至文件>選項>信任中心>信任中心設置>可信位置。如果包含Excel工作簿的文件夾不存在,請單擊添加新位置以添加該文件夾。
如果添加新位置顯示爲灰色,則這最可能是由貴公司設置的組策略(如果您位於公司機器/域中)。如果有,並且有一些可信的位置,請將您的Excel工作簿合併到一個。
# set params for workbook
$WorkbookPath = 'C:\Path\To\WEorkbook.xlsb'
$FunctionName = 'HelloWorld'
$FunctionParam = 'Test'
# create an Excel com object
$Excel = New-Object -ComObject Excel.Application
$Excel.visible = $false
$Workbook = $Excel.Workbooks.Open($WorkbookPath)
# call function with params. add extra comma delimited params here, like this:
# $Excel.Run($FunctionName, $P1, $P2, $P3, $P4)
$Excel.Run($FunctionName, $FunctionParam)
# close the workbook
$Workbook.Close()
# quit Excel and cleanup
$Excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($Excel) | Out-Null
[System.GC]::Collect()
[System.GC]::WaitForPendingFinalizers()
是否有Excel文件永久打開選項?你所引用的答案基本上每分鐘運行一次'Module1.test'。 'tempo()'在設定的時間調用'message_ctrl()',然後調用'Module1.test',然後調用'message + ctrl()'的'tempo()'等等。導通時間(https://msdn.microsoft.com/en-us/library/office/ff196165.aspx)。 您很可能需要讓PowerShell和Excel以某種方式進行通信 - 如果用戶限制阻止您直接執行該操作,則使用中間文件。 – gms0ulman