2017-02-21 34 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', затем' tempo() ', который вызывает' message + ctrl() 'и т. д. Как упоминалось там, проверьте [Приложение. OnTime] (https://msdn.microsoft.com/en-us/library/office/ff196165.aspx). Скорее всего, вам понадобится, чтобы PowerShell и Excel каким-то образом обменивались данными - используя промежуточный файл, если пользовательские ограничения не позволяют вам делать это напрямую. – gms0ulman

ответ

0

Во-первых, это звучит, как эту проблему:

Я не могу проверить «Run ли регистрируется использование или нет», потому что я не имеют достаточных привилегий

... из-за вас, не имея права администратора на машине, которую вы пытаетесь создать запланированное задание. Если вы являетесь администратором, запустите диспетчер задач как администратор или запустите как пользователь с правами администратора.

Предполагая, что вы отвечаете критериям admin privs, вы можете открыть книгу 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() 

 Смежные вопросы

  • Нет связанных вопросов^_^