2011-02-11 2 views
8

Excel Interop을 사용하는 C# .NET에서 콘솔 프로그램을 개발했습니다. 프로그램은 명령 행에서 실행하면 내 개발 시스템과 Windows 서버 2008에서 올바르게 작동합니다. 나는 매일 그것을 실행하는 작업을 예약 할 때Excel Interop에서 프로그램을 예약 할 수 없습니다.

, 나는이 짜증나는 상호 운용성에 오류가 발생했습니다 :

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'이 존재하고 프로그램이 시작될 때 완전히 폐쇄 된 경우, 명령 줄에서 동일한 프로그램을 실행하려고하면 예상대로 끝났기 때문입니다.

또한 관리자 권한으로 실행되도록 설정되었으므로 권한 문제가되어서는 안됩니다.

도와 주시겠습니까?

+0

이 문제에 대한 해결책을 찾거나 해결 했습니까? 나는 똑같은 문제가 있습니다. 해결책을 올리시겠습니까? 감사! – dpac

답변

1

예약 된 작업에서 Office 자동화를 수행 할 때 상황이 좀 이상해질 수 있으므로 다른 사용자 계정을 사용해 보는 것이 좋습니다.

로그인 할 때 작동하는 경우 작업 스케줄러를 설정하여 계정에서 실행하는 것이 좋습니다. 여전히 작동하는 경우 계정과 동일한 종류의 권한을 가진 새 계정을 만들어 해당 계정으로 실행하십시오.

그렇지 않으면 관리자 계정으로 로그온하고 관리자로 로그인했을 때 응용 프로그램이 실행되는지 확인하십시오. 예를 들어 사용자가 처음으로 대화 형 로그인을하는 동안 설치 프로그램을 가져 오는 Office가있을 수 있습니다.

+0

내가 말했듯이, 나는 이미 관리자로 실행되도록 일정 작업을 설정했습니다. – muek

+0

@ muek : 관리자가 평소에 로그인 한 계정이 아니라면 내 대답에 대한 응답이 아닙니다. 내 대답은 두 계정 모두에서 모든 설정이 동일하면 사용 권한과 관련이별로 없습니다. –

+0

콘솔 또는 일정을 사용하여 실행 한 계정이 동일합니다. – muek

1

The file 'e:\excel.xls' exists

아니요. E :와 같은 매핑 된 드라이브 문자는 사용자 별입니다. 드라이브가 사용자 계정에서만 유효하며 예약 된 작업이 다른 계정을 사용 중일 수 있습니다. 계정을 조작하는 대신 가장 좋은 방법은 범용 이름을 사용하는 것입니다. \\server\share\excel.xls처럼 모든 계정에 유효합니다. 그것에 대해 더 궁금한 점은 serverfault.com

+0

파일이 존재합니다. E : 드라이브가 매핑 된 드라이브가 아닙니다. 실제 드라이브입니다. – muek

16

이것을 확인하십시오. 이 일이 올바르게 작동하도록 폴더를 만들어야하는 것 같습니다.

C : \ WINDOWS \ system32를 \ 설정 \ systemprofile \ 내가이 작업을 얻기 위해 고군분투했다 여기

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

+0

우수! 이 문제는 곧바로 해결되었습니다. C# 응용 프로그램을 예약하고 있습니다. – Rich

+0

감사합니다. 나는 같은 문제를 겪고 있었다. – RBalm

+1

예약 된 작업 속성에서 "최고 권한으로 실행"확인란을 선택하는 것과 함께 내 문제가 해결되었습니다. – ytoledano

0

이 문서에서 촬영

데스크톱

. 나는 온 세상을 다녀왔다. 나는 "Configure for"옵션으로 XP를 선택하도록 허용 된 예약 된 작업을 설정하는 동안 드롭 다운이 발생한 한 스레드의 도움으로 내 문제를 해결했다고 생각했다. XP 옵션은 작업을 처음부터 만들 때 사용할 수 있습니다. 예약 된 작업의 소유자가 실제로 컴퓨터에 로그인되어있는 한 제대로 작동했습니다.

ID를 조정하고 사용자를 패널에 하드 코딩함으로써 DCOM 구성에서이를 수정할 수있었습니다. 한마디로

1

작업 스케줄러에 사용되는 프로파일에 대한 적절한 권한을 가진이 폴더를 만들어야합니다 :

C : \ WINDOWS \ system32를 \ 설정 \ systemprofile \ 바탕 화면 C : \ WINDOWS \ SysWOW64와 \ 설정 \를 systemprofile \ Desktop