2017-02-21 96 views
0

我編寫了一個宏,它將自動更新一些excel文件,並希望在另一個腳本從互聯網下載某些數據文件時運行它。當屏幕鎖定時從Excel運行宏

但是,我沒有足夠的權限來檢查「運行用戶是否已登錄」。

此外,當屏幕鎖定時,任務計劃程序似乎無法打開具有在文件打開時運行的宏的Excel文件。

我瀏覽過不少網站,無法找到任何滿意的答案。如果它不構成安全風險,我將使用powershell腳本,每9.5分鐘將鼠標移動一個像素,以防止其睡眠。我想我可以使用腳本創建一個人造鎖屏,鎖定鍵盤和鼠標,同時保持所有活動,以便可以運行宏和其他PowerShell腳本,但我真的沒有專業知識來做到這一點。

有關如何解決此問題的其他建議?所有的答案非常感謝!

我真不明白,在Running macros at scheduled time when pc is locked

+0

是否有Excel文件永久打開選項?你所引用的答案基本上每分鐘運行一次'Module1.test'。 'tempo()'在設定的時間調用'message_ctrl()',然後調用'Module1.test',然後調用'message + ctrl()'的'tempo()'等等。導通時間(https://msdn.microsoft.com/en-us/library/office/ff196165.aspx)。 您很可能需要讓PowerShell和Excel以某種方式進行通信 - 如果用戶限制阻止您直接執行該操作,則使用中間文件。 – gms0ulman

回答

0

首先答案,這聽起來像這樣的問題:

我不能勾選「運行使用是否登錄或不」,因爲我 沒有足夠的權限

......這是由於您沒有管理員權限,因此您試圖在計算機上創建計劃任務。如果您是管理員,請以管理員身份運行任務管理器,或以具有管理員權限的用戶身份運行。

假設您符合管理權限標準,您可以打開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()