작업 스케줄러에서 실행할 때 Excel에서 파일을 열 수없는 이유는 무엇입니까?


14

Excel 통합 문서를 열고 매크로를 실행하는 PowerShell 스크립트를 작성했습니다. PS 콘솔에서 또는 powershell.exe script.ps1을 사용하여 명령 줄에서 해당 스크립트를 실행하면 작동합니다. Windows 작업 스케줄러에서 작업을 설정하면 해당 Excel 파일에 대해 예외가 발생하여 해당 파일이 없거나 이미 사용 중임을 나타냅니다.

스크립트가 명령 줄에서 제대로 실행되었으므로 파일이 존재하며 사용 중이 아니라고 생각합니다.

네트워크 신뢰 / 관리자 권한 문제를 피하기 위해 Excel 파일을 로컬 및 권한이없는 영역으로 이동하려고했습니다. 작업은 여전히 ​​최고 권한으로 실행됩니다. 경로에 공백이나 특수 문자가 없습니다.

File 시스템 객체를 사용하여 파일에 액세스하려고하면 스케줄러에서 실행할 때도 오류가 없으므로 다음과 같은 것입니다. Excel.Application.Workbooks.Open("..") 메소드와 .

지금 무엇을 고려해야합니까?


1
예약 된 작업을 실행하는 데 어떤 사용자 계정이 사용됩니까?
Massimo

도메인 관리자 계정을 사용했는데 문제가있는 것 같습니다. 도메인 관리자 그룹을 사용했습니다. 그러나 이제 DCOM 액세스 권한에 도메인 관리자 계정에 문제가있는 이유를 찾아야했습니다.
zrz

TL; DR :에 해결 에릭의 대답 이다 효과 만이 지원되지 않는 - 볼 이 Microsoft 지원 문서를 . DocumentFormat.OpenXml nuget 패키지 와 같은 대안을 찾는 것이 좋습니다 .
mklement0

답변:


8

DCOM 권한 문제 일 수 있습니다. Excel 자동화는 때때로 위험에 처해 있습니다 ...

이와 같은 문제를 발견 한 유일한 방법은 DCOM 권한을 통해 Excel을 특정 사용자로 실행하도록 설정하는 것입니다.

  1. 구성 요소 서비스 열기 (시작-> 실행, dcomcnfg 입력)
  2. 구성 요소 서비스-> 컴퓨터-> 내 컴퓨터로 드릴 다운하고 DCOM 구성을 클릭하십시오.
  3. Microsoft Excel Application을 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하십시오.
  4. ID 탭에서이 사용자를 선택하고 대화식 사용자 계정 (도메인 또는 로컬)의 ID와 비밀번호를 입력 한 후 확인을 클릭하십시오.

컴퓨터에 대한 관리자 액세스 권한이있는 계정으로 작업을 실행하도록 설정하더라도 대화식 사용자 또는 시작으로 유지해도 작업 스케줄러에서는 작동하지 않습니다.


1
dcomcnfg를 지적 해 주셔서 감사합니다. dcomcnfg에서 볼 수 있도록 Excel 응용 프로그램을 레지스트리에 수동으로 추가 한 다음 ID 설정을 변경하려고 시도했지만 작동하지 않았습니다. dcomcnfg에서 액세스 권한을 조사했습니다. 도메인 관리자가 목록에 있고 로컬 및 원격 액세스 권한이 있었지만 아이콘 위에 작은 빨간색 표시 (빨간색 디스크 내 흰색 십자가)가있었습니다. 왜 그런지 모르겠지만 도메인 관리자 계정에 문제가 있습니다. 도메인 관리자 그룹 계정을 추가하고 해당 그룹에서 작업을 실행하는 것이 해결 방법입니다.
zrz

Microsoft는 비 대화식 세션에서 Office COM 구성 요소 실행을 지원하지 않습니다 ( support.microsoft.com/en-us/help/257757/… 참조) . eric의 답변 은 현재 효과적인 해결 방법이지만 지원되지 않습니다.
mklement0

이 답변은 Microsoft Excel 응용 프로그램 항목이 DCOM 구성에서 완전히 누락 된 경우 추가하는 방법을 포함하여 개선 될 수 있습니다. docs.microsoft.com/en-us/archive/blogs/…를 참조하십시오 . 또한 FWIW에서도 문제가 해결되지 않았습니다. Excel 프로세스는 여전히 작업 관리자에 나타나지만 지정된 파일은 열리지 않습니다.
TylerH

마찬가지로이 변경을 수행하면 Excel VBA 파일 / VBA 편집기를 전혀 실행하거나 열지 못하게되어 CTD를 시도 할 때마다 CTD가 발생합니다.
TylerH

42

이 두 폴더를 작성하십시오.

32 비트 :

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

64 비트 :

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

대화 형으로 실행되지 않으면 Excel에 이러한 폴더가 필요합니다. 64 비트 OS 인 경우에도 두 폴더를 모두 만듭니다.


3
Microsoft가 비 대화식으로 Office 구성 요소를 실행하는 것을 보증하지는 않지만 많은 경우에 문제를 해결할 수 있음을 추가하고 싶습니다.
flindeberg

9
이것은 진지한 흑 마법입니다. 더 무서운 것은 모르겠습니다.이 시나리오에서는 Excel에서이 폴더가 필요했거나 누군가이 시나리오에서 Excel에서이 폴더가 필요하다는 것을 알고있었습니다.
Rich C

1
@ flindeberg의 포인트를 강조하기 위해 :이 해결 방법은 효과가 있지만,이 지원되지 않는 - 볼 이 Microsoft 지원 문서를 .
mklement0

이러한 폴더를 만들고 system32 / SysWOW64에서 데스크톱 폴더까지 내 계정 (예약 된 작업을 실행하는 계정)에 대해 모든 권한을 할당해도 여전히 작동하지 않습니다.
TylerH

2

DCOM 권한을 설정할 때 Microsoft Excel이 dcomcnfg시도에 나타나지 않으면mmc comexp.msc /32

참고


이로 인해 DCOM Config가 열리고 몇 가지 항목을 등록할지 여부를 물었지만 Excel은 그중 하나가 아닙니다.
TylerH
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.