2012-03-20 1 views
3

.Net 1.1의 이전 프로젝트가 .Net4.0으로 마이그레이션되고 있습니다. 이 프로젝트 열려면 다음과 같은 방법을 사용하는 파일 엑셀 :.Net4.0의 Process.Start()를 사용하여 Excel 파일을 열지 못함

Process process = new Process(); 

try 
{ 
    process.StartInfo.FileName = marco_file; 
    process.Start(); 
} 
catch(Exception) 
{ 
} 
finally 
{ 
    process.Close(); 
} 

을 그리고 marco_file는 엑셀의 경로처럼, 매크로 파일입니다 거기에 매크로를 즉시 실행 "C \ 프로젝트 \ Test.xls를" 을 엑셀 파일이 열릴 때.

.Net1.1에서 모두 코드와 매크로가 잘 실행됩니다. .Net4에서는 코드가 예외없이 실행됩니다. 그러나 매크로는 작동하지 않았습니다.

왜 Excel 파일의 매크로가 실행되지 않았습니까?

내 환경은 Win7 64 비트입니다. Office 2010 64 비트. 나는 다음과 같은 코드로 변경하고 그 결과는 프로세스가 시작되지 의미 다른 블록에 들어가는 것입니다 디버그 모드

process.StartInfo.FileName = marco_file; 
if (process.Start()) 
{ 
    Debug.WriteLine("-->start "); 
} 
else 
{ 
    Debug.WriteLine("-->failed "); 
} 

을 실행하면 7.5

감사

을 IIS.

아무도 그 이유를 알고 있습니까?

+3

코드가 예외없이 실행되고 있습니까? 너는 그들을 먹는 것 같다. –

+0

catch {}를 제거하고 다시 시도하여 예외가 던져 졌는지 그리고 무엇인지 알아볼 수 있습니다. – Mathieu

+0

그냥 잡기 (예외) – Bahamut

답변

0

Excel의 보안을 확인하십시오. 기본적으로 Excel 2010에서는 매크로가 들어있는 통합 문서를 열 때 매크로를 사용할 수 없도록 설정하고 명시 적으로 매크로를 사용하도록 설정해야합니다. 자동으로 실행되도록 매크로가 허용 여기

File tab on the ribbon => Options 
         => Trust Center 
         => Trust Center Settings... 
         => Macro Settings 

유일한 옵션 :

Enable all macros (not recommended; potentially dangerous code can run) 

참고 경고하지만

당신이에 갈 필요가 매크로를 사용합니다.

+0

보안 설정이 가장 낮습니다. 모든 매크로 사용 – DerekY

+0

파일을 직접 열면 매크로가 자동으로 실행됩니까? –

+0

예. 열면 자동으로 실행됩니다. – DerekY