Чому Excel не може відкрити файл під час запуску із планувальника завдань?


14

Я написав сценарій PowerShell, який відкриває робочу книжку Excel і запускає макрос. Коли я запускаю цей скрипт з консолі PS або навіть з командного рядка за допомогою powershell.exe script.ps1, він просто працює. Коли я встановлюю завдання із планувальника завдань Windows, він створює виняток із цього файлу Excel, кажучи, що він або не існує, або вже використовується.

Файл існує напевно, оскільки сценарій добре працює з командного рядка, і я впевнений, він не використовується.

Я намагався перемістити файл Excel в локальну і непривілейовану область, щоб уникнути проблем з довірою до мережі / адміністратора. Завдання все ще виконується з найвищими привілеями. Шлях не має пробілів або спеціальних символів.

Коли я намагаюся отримати доступ до файлу за допомогою об'єкта Файлова система, помилок немає навіть під час запуску з планувальника, тому я думаю, що це специфічно для Excel.Application.Workbooks.Open("..")методу.

Що я повинен розглянути зараз?


1
Який обліковий запис користувача використовується для виконання запланованого завдання?
Массімо

Я використовував обліковий запис адміністратора домену, і, здавалося, це проблема. Використання групи адміністраторів домену працювало. Але тепер мені довелося з’ясувати, чому у авторизації DCOM Access є проблеми з обліковим записом адміністратора домену.
zrz

tl; dr: Довідка у відповіді eric є ефективною , але вона не підтримується - див. цю статтю підтримки Microsoft . Краще шукати альтернативи, такі як нукет пакет DocumentFormat.OpenXml .
mklement0

Відповіді:


8

Ймовірно, проблема з дозволом DCOM. Автоматизація Excel іноді загрожує небезпекою ...

Єдиний спосіб, який я виявив навколо таких питань, як це встановити Excel для роботи в якості конкретного користувача через дозволи DCOM.

  1. Відкрити компоненти компонентів (Пуск -> Виконати, введіть dcomcnfg)
  2. Перейдіть до Служб компонентів -> Комп'ютери -> Мій комп'ютер і натисніть DCOM Config
  3. Клацніть правою кнопкою миші додаток Microsoft Excel та виберіть Властивості
  4. На вкладці Особистість виберіть цього користувача та введіть ідентифікатор та пароль інтерактивного облікового запису користувача (доменного або локального) та натисніть кнопку ОК

На жаль, зберігати його як інтерактивного користувача або запускати не працює з планувальником завдань, на жаль, навіть при встановленні завдання для запуску в обліковому записі, який має доступ адміністратора до машини.


1
Дякуємо, що вказали на dcomcnfg. Мені довелося вручну додати додаток Excel до реєстру, щоб мати змогу побачити його в dcomcnfg, тоді я спробував змінити параметри ідентичності, але це також не вийшло. З dcomcnfg я розглядав Авторизацію доступу: Адміністратор домену був у списку і мав локальний та віддалений доступ, але над його піктограмою був невеликий червоний знак (білий хрест у червоному диску). Я поняття не маю, чому, але якимось чином виникає проблема з обліковим записом адміністратора домену. Додавання групового облікового запису Адміністраторів домену та виконання завдання з цієї групи є вирішенням.
zrz

Microsoft не підтримує запуск компонентів Office COM у неінтерактивних сесіях - див. Support.microsoft.com/en-us/help/257757/… . Відповідь eric - це наразі ефективне вирішення, але воно не підтримується.
mklement0

Цю відповідь можна було б покращити, пояснивши, як додати записи програми Microsoft Excel, коли вони повністю відсутні у DCOM Config. Дивіться docs.microsoft.com/en-us/archive/blogs/… Також FWIW, це не вирішило моєї проблеми. Процес Excel як і раніше відображається в диспетчері завдань, але зазначений файл ніколи не відкривається / не запускається.
TylerH

Так само після внесення цієї зміни це заважало мені запускати або навіть відкривати файли Excel VBA / редактор VBA взагалі, викликаючи CTD кожного разу, коли я намагаюся це зробити.
TylerH

42

Створіть ці дві папки:

32Bit:

C:\Windows\System32\config\systemprofile\Desktop  

64Bit:

C:\Windows\SysWOW64\config\systemprofile\Desktop

Excel потребує цих папок, якщо вони не запускаються інтерактивно. Створіть обидві папки, навіть якщо ви перебуваєте на 64-розрядної ОС.


3
Я просто хочу додати, що Microsoft не підтримує будь-який компонент Office неінтерактивно, але його можна обійти в багатьох випадках.
Фліндеберг

9
Це якась серйозна чорна магія. Я не знаю, що страшніше - що Excel потребував цієї папки в цьому сценарії чи хтось знав, що Excel потребує цієї папки в цьому сценарії.
Rich C

1
Щоб підкреслити точку @ flindeberg: Цей спосіб вирішення ефективний , але він не підтримується - див. Цю статтю підтримки Microsoft .
mklement0

Створення цих папок та призначення повного контролю для мого облікового запису (який також є обліковим записом, який виконує заплановане завдання) аж до папки system32 / SysWOW64 до папки Desktop для мене ще не працював.
TylerH

2

Під час встановлення дозволів DCOM, якщо Microsoft Excel не з’являється у dcomcnfgспробіmmc comexp.msc /32

довідник


Це призвело до того, що DCOM Config відкрився для мене і запитав, чи хочу я зареєструвати пару записів, але Excel не був серед них.
TylerH
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.