Не удается запланировать программу с помощью Excel Interop - PullRequest
8 голосов
/ 11 февраля 2011

Я разработал консольную программу на C # .NET, которая использует Excel Interop.Программа прекрасно работает на моей машине для разработки и в Windows Server 2008, если я запускаю ее из командной строки.

Когда я пытаюсь запланировать задачу для ее ежедневного запуска, я получаю эту досадную ошибку взаимодействия:

02/11/2011 00:30:05,000 [1] FATAL My.Program [(null)] - Unable to Microsoft Office Excel open file 'E:\excel.xls' by one of several reasons: 

• The file name or path does not exist. 
• The file is being used by another program. 
• The workbook you are trying to save has the same name as the currently opened book. 

System.Runtime.InteropServices.COMException (0x800A03EC): Unable to access the Microsoft Office Excel file 'E:\excel.xls' by one of several reasons: 

• The file name or path does not exist. 
• The file is being used by another program. 
• The workbook you are trying to save has the same name as the currently opened book. 
  in Microsoft.Office.Interop.Excel.Workbooks.Open (String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, IgnoreReadOnlyRecommended Object, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad) 

Файл 'e: \ excel.xls' существует и полностью закрывается при запуске программы, потому что, если я пытаюсь запустить ту же программу в моей командной строке, он заканчивается как ожидалось.

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

Можете ли вы мне помочь?

Ответы [ 6 ]

18 голосов
/ 18 апреля 2012

Проверьте это. Похоже, вам нужно создать папку, чтобы заставить эту вещь работать правильно.

C: \ Windows \ System32 \ Config \ systemprofile \ Desktop

Взятые из этой статьи здесь

http://social.msdn.microsoft.com/Forums/en/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91

2 голосов
/ 05 октября 2016

Короче говоря, обязательно создайте эти папки с соответствующими правами для профиля, используемого в планировщике задач, и это не только для чтения:

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

И проверьте это:

В меню «Пуск» выберите «Выполнить» и введите Dcomcnfg.exe.В Службах компонентов щелкните Корень консоли, разверните Службы компонентов, разверните Компьютеры, разверните Мой компьютер, разверните DCOMConfig.Поиск библиотеки объектов Microsoft Word 14.0.Нажмите здесь.Щелкните правой кнопкой мыши и выберите «Свойства».На вкладке «Безопасность» выберите «Настроить» в разделе «Запуск и активация».Нажмите «Изменить» и добавьте идентификатор пула приложений, в котором запущено ваше приложение.Повторите вышеуказанный шаг для «Разрешения на доступ»

1 голос
/ 12 февраля 2011

Файл 'e: \ excel.xls' существует

Нет.Отображенные буквы дисков, такие как E: для каждого пользователя.Диск действителен только под вашей учетной записью, назначенная задача, вероятно, выполняется с использованием другой учетной записи.Вместо того, чтобы возиться с учетными записями, лучше всего использовать универсальное имя.Как и \\server\share\excel.xls, это действительно для любого аккаунта.Задайте больше вопросов об этом на serverfault.com

1 голос
/ 12 февраля 2011

Ситуация может стать немного странной, когда вы выполняете автоматизацию Office из запланированной задачи, поэтому я предлагаю попробовать другую учетную запись пользователя.

Если это работает, когда вы вошли в систему, тогда я бы предложил настроить планировщик задач, чтобы он запускался под вашей учетной записью. Если это все еще работает, создайте новую учетную запись с теми же разрешениями, что и для вашей учетной записи, и запустите ее под этой учетной записью.

В противном случае попробуйте войти в систему как учетная запись администратора и убедиться, что приложение запускается при входе в систему в качестве администратора. Например, может быть, есть какая-то часть Office, которая настраивается при первом интерактивном входе пользователя в систему или тому подобное.

0 голосов
/ 26 октября 2018

Создайте каталог «Рабочий стол» под:

«C: \ Windows \ System32 \ Config \ systemprofile \ Desktop»

И

«C: \ windows \ SysWow64 \ config \ systemprofile \ Desktop» для 64-разрядных операционных систем

Предоставить полный доступ к этой папке пользователю, запустившему службу. Это должно решить вашу проблему.

0 голосов
/ 23 сентября 2013

Я изо всех сил пытался заставить это работать. Я был на всем протяжении Google, я думал, что я решил свою проблему с помощью одного потока, который имел выпадающий список при настройке запланированного задания, которое позволило вам выбрать XP в качестве параметра «Настроить для», параметр XP только доступно при создании задачи с самого начала. Это работало нормально до тех пор, пока владелец запланированной задачи действительно вошел в систему на компьютере.

Я наконец смог исправить это в конфигурации DCOM, настроив Identity и жесткое кодирование пользователя на панели.

...