の答えを理解していないが、それはこの問題のように聞こえる:
私は「使用がログオンしているかどうかを実行する」をチェックすることはできません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()
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