Microsoft Excel не может получить доступ к файлу "...". Есть несколько возможных причин Windows Server 2008 R2 с Microsoft Office 2010

У меня проблема с запуском приложения Excel под конкретным пользователем.

Я пытаюсь запланировать этот сценарий (C#) через приложение X (а не планировщик задач Windows. И это приложение всегда будет использовать учетную запись службы для запуска служб на сервере). Если я запускаю скрипт C# в командной строке под тем же пользователем, он запускается. Под приложением X, которое использует того же пользователя для запуска сценария C#, не удается открыть приложение Excel (не достаточно разрешений?).

Этот скрипт вызывает: app.Workbooks.Open(ExcelFileName,0,false,Type.missing....), но выдает следующую ошибку:

Microsoft Excel не может получить доступ к файлу "...". Есть несколько возможных причин:

-Имя файла или путь не существует.

-Файл используется другой программой.

- Книга, которую вы пытаетесь сохранить, имеет то же имя, что и текущая открытая книга.

Я попробовал все методы, которые я нашел в Интернете, но безрезультатно.

  1. Создайте каталог "C:\Windows\SysWOW64\config\systemprofile\Desktop" (для 64-битной Windows) или "C:\Windows\System32\config\systemprofile\Desktop" (для 32-битной Windows). Затем установите указанные выше права полного доступа для каталога Desktop (например, в Win7, IIS 7 и DefaultAppPool установите разрешения для пользователя "IIS AppPool\DefaultAppPool").
  2. Изменена конфигурация DCOM для приложения Microsoft Excel, чтобы включить этого пользователя для локального / удаленного запуска и доступа
  3. Включил все макросы в Excel и установил Центр управления безопасностью.
  4. Добавьте пользователя, чтобы иметь полный контроль над всеми папками, содержащими файл Excel.
  5. В разделе конфигурации DCOM приложения Microsoft Excel, если я изменю вкладку "Удостоверение" для проверки "Этот пользователь" и введу имя пользователя / пароль, чтобы Excel всегда работал под этим пользователем. Тогда приложение работает отлично. Однако другие пользователи не могут запускать приложение Excel самостоятельно со следующей ошибкой: "Невозможно использовать связывание и внедрение объектов". Если я установлю флажок "Использовать запускающего пользователя", Excel не сможет быть запущен. Нет ошибок в журналах или событиях где-либо, чтобы проверить.

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

Теперь, обычно, когда я запускаю этот отчет Excel, я могу дважды щелкнуть файл, и он автоматически запустится, сохранит новые параметры в текущем файле и сгенерирует новый файл Excel (с датой, прикрепленной к имени файла). Это означает, что есть изменение (сохранение) в исходном файле.

Я ценю вашу помощь!

3 ответа

Я обнаружил, что проблема заключается в уровне безопасности на сервере!

Создание папки "Рабочий стол" внутри C:\Windows\System32\config\systemprofile и предоставление учетной записи службы для доступа к папке на рабочем столе недостаточно.

Я изменил папку C:\Windows\System32\config (или C:\windows\SysWOW64\config), чтобы разрешить доступ к учетной записи службы на вкладке безопасности.

Затем мне также пришлось настроить такое же разрешение для подпапки C:\Windows\System32\config\systemprofile (или C:\windows\SysWOW64\config\systemprofile) для учетной записи службы.

Это работает!

Microsoft Excel не может получить доступ к файлу в Server 2012 Excel 2016.. проверил различные решения в Интернете, чтобы создать рабочий стол папки в C:\Windows\SysWOW64\config\systemprofile\desktop.. не работал для этого, но затем я добавил рабочий стол папки в System32 и это определенно сработало.

Поскольку у меня установлен 64-битный Excel, правильным каталогом оказался каталог c:\windows\system32\config\systemprofile\desktop

Я столкнулся с другим способом, которым вы можете получить эту ошибку: при попытке сохранить файл с "недопустимым" именем, например, с ударом (косая черта) в нем.

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

В частности, я пытался сохранить файл с именем C:\RoboReporter\ABUELITOS\20160524_1327\ABUELITOS - Частота заполнения - 4\1\61910B10

Удары (показанные как скопированные в скопированном тексте исключения, но рассматриваемые как сдвиги при наведении на значение при отладке) были причиной дискомбулюции. Однажды я исправил это, заменив удар на подчеркивание:

filename = String.Format("{0}\\{1} - Fill Rate - {2}.xlsx", uniqueFolder, _unit, _begDate.ToShortDateString());
filename = filename.Replace("/", "_");

... все прошло гладко

Другие вопросы по тегам