2012-03-25 6 views
3

내 응용 프로그램에서 이미 존재하는 Excel 파일을 열고이 파일에 정보를 추가 할 수 있기를 원합니다. Microsoft Interop 라이브러리를 사용합니다. 추가 및 Saveas를 사용하여 새 스프레드 시트를 만들면 Excel 응용 프로그램을 닫을 때까지 파일을 단독 모드로 설정할 수 있음을 알았습니다.C에서 interop을 사용하여 단독 모드로 Excel 파일 열기

그러나 기존 파일을 열 때 동일한 작업을 수행하는 방법을 찾지 못했습니다. 그 이유는 내가 응용 프로그램이 열려있는 동안 Excel 파일을 열면 예외가 발생하기 때문입니다. 나는 엑셀을 사용하여 엑셀 파일을 열 때 독점 모드로 자동 열립니다.

파일을 연 다음 saveas를 사용했지만 작동하지 않았습니다.

private object missing=Type.Missing; 
workbook = workbooks.Open(excelfilename,missing, false, missing, missing, missing,missing,missing,missing,missing,false, missing,missing, missing, missing); 
workbook.SaveAs((String)excelfilename, missing, missing, missing, missing, missing, Excel.XlSaveAsAccessMode.xlExclusive, Excel.XlSaveConflictResolution.xlLocalSessionChanges, missing, missing, missing, missing); 

은 내가 나중에 코드에서 예외를 얻고있다 :

Excel.Range testrange = sheet.get_Range(rangetext); 

내가 점점 오전 예외는 COMException이다 "HRESULT에서 예외 : 0x800401A8".

통합 문서 클래스 ExclusiveAccess 숙박 시설에서
+1

기존 파일을 열 때 이미 독점적 인 액세스 권한을 가지고 있으므로 공유를 허용하려면 ReadOnly를 사용해야합니다. 예외는 이것과 관련이 거의 없습니다. 마지막 4 자리 16 진수를 가져 와서 10 진수로 변환 한 다음 앞에 "Excel error"를 입력하여 google로 변환하십시오. 많은 타격. –

+0

이 경우에도 응용 프로그램이 실행되는 동안 Excel을 사용하여 파일을 열면 읽기 전용 모드로 수행 될 수 있음을 알리지 않습니다. 내 스프레드 시트를 만들고 saveas를 사용할 때 문제가 발생하지 않으며 Excel은 읽기 전용 모드로만 파일을 열 수 있습니다. – user1291263

+0

두 개의 다른 Excel.Application 인스턴스를 사용하고 있습니까? – code4life

답변

0

당신은 마이크로 소프트 상호 운용성 라이브러리

를 사용하여 범위 & 속성 설정 를 얻을 수/새 시트를 추가/엑셀 파일을 여는 방법의 완벽한 예를 들어 this article에 갈 수