2012-03-20 3 views
3

Недавно старый проект .Net 1.1 переносится на .Net4.0. В проекте используется следующий метод, чтобы открыть файл первенствовать:Не удалось открыть файл excel с помощью Process.Start() в .Net4.0

Process process = new Process(); 

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

И marco_file это путь файла Excel с помощью макросов, как «C: \ Проект \ test.xls» макрос в нем будет работать сразу когда файл excel открывается.

В .Net1.1 оба кода и макрос работают хорошо. В .Net4 коды выполняются без исключений. Но макрос не работал.

Почему макрос в файле excel не запускался?

Мое окружение - Win7 64bit. Office 2010 64bit. IIS 7.5

Благодаря

При изменении следующих кодов и запустить режим отладки

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

Результатом является то, что он переходит в другое блок, что означает, что процесс не запускается.

Любой знает почему?

+3

Вы уверены, что код работает без каких-либо исключений? Кажется, вы едите их. –

+0

Удалите catch {} и повторите попытку, чтобы вы могли увидеть, выбрано ли исключение и что это такое. – Mathieu

+0

попробуйте записать его как catch (Exception ex) {// распечатать исключение} вместо просто catch (исключение) – 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