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 не может получить доступ к файлу "...". Есть несколько возможных причин:
-Имя файла или путь не существует.
-Файл используется другой программой.
- Книга, которую вы пытаетесь сохранить, имеет то же имя, что и текущая открытая книга.
Я попробовал все методы, которые я нашел в Интернете, но безрезультатно.
- Создайте каталог "C:\Windows\SysWOW64\config\systemprofile\Desktop" (для 64-битной Windows) или "C:\Windows\System32\config\systemprofile\Desktop" (для 32-битной Windows). Затем установите указанные выше права полного доступа для каталога Desktop (например, в Win7, IIS 7 и DefaultAppPool установите разрешения для пользователя "IIS AppPool\DefaultAppPool").
- Изменена конфигурация DCOM для приложения Microsoft Excel, чтобы включить этого пользователя для локального / удаленного запуска и доступа
- Включил все макросы в Excel и установил Центр управления безопасностью.
- Добавьте пользователя, чтобы иметь полный контроль над всеми папками, содержащими файл Excel.
- В разделе конфигурации 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("/", "_");
... все прошло гладко