2017-02-21 10 views
0

いくつかのExcelファイルを自動的に更新するマクロをプログラムし、別のスクリプトがインターネットからデータファイルをダウンロードしたときに実行します。画面がロックされている間にExcelからマクロを実行する

ただし、「ユーザーがログオンしているかどうかを確認する」権限を確認する権限がありません。

また、画面がロックされていると、タスクスケジューラは、開いているファイルで実行されるマクロを持つExcelファイルを開くように見えません。

私はかなりのサイトを閲覧しており、満足のいく答えを見つけることはできません。私はセキュリティリスクを構成しなかった場合、スリープ状態にならないように9.5分ごとにマウスを1ピクセル移動するpowershellスクリプトを使用していました。人工のロック画面を作成し、キーボードとマウスをロックするスクリプトを使用することができ、マクロと他のpowershellスクリプトを実行できるようにすべてを維持していると思いますが、これを行う専門知識はありません。

これを回避する方法についての他の提案はありますか?すべての答えは非常に感謝!

私は本当にまずRunning macros at scheduled time when pc is locked

+0

Excelファイルを永久に開くオプションはありますか?あなたが参照した答えは、基本的に毎分Module1.testを実行します。 'tempo()'は 'Module1.test'を呼び出し、' message + ctrl() 'を呼び出す' tempo() 'などを設定した時刻に' message_ctrl() 'を呼び出します。 OnTime](https://msdn.microsoft.com/en-us/library/office/ff196165.aspx)を参照してください。 ほとんどの場合、PowerShellとExcelは何らかの方法で通信する必要があります。ユーザーの制限によって直接処理されないようにするには、中間ファイルを使用する必要があります。 – gms0ulman

答えて

0

の答えを理解していないが、それはこの問題のように聞こえる:

私は「使用がログオンしているかどうかを実行する」をチェックすることはできませんI理由 に十分な権限がありません

...スケジュールされたタスクを作成しようとしているマシンで管理者権限を持っていないためです。管理者の場合は、タスクマネージャを管理者として実行するか、管理者権限を持つユーザーとして実行します。

管理者の条件を満たすと仮定すると、Excelブックを開き、PowerShellを使用してマクロを実行できます。以下のコードを使用してPowerShellスクリプトを作成して保存します。ワークブックのパス、関数名、およびパラメータに合わせて修正します。次に、PowerShellスクリプトを呼び出す予定のタスクを作成します。

また、Excelワークブックの場所が「信頼できる場所」にあることを確認する必要があります。 Excelでは、[ファイル]> [オプション]> [信頼センター]> [信頼センター設定]> [信頼できる場所]の順に選択します。 Excelワークブックを含むフォルダがない場合は、[新しい場所の追加]をクリックしてフォルダを追加します。

[新しい場所の追加]がグレー表示されている場合は、会社のドメイン名を使用している場合は、会社によって設定されたグループポリシーが適用されます。その場合、信頼できる場所がいくつかある場合は、Excelワークブックを1つに移動します。

# 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() 
関連する問題