2012-03-20 37 views
3

最近、.Net 1.1の古いプロジェクトが.Net4.0に移行しています。プロジェクトは、Excelファイル開くには、次の方法を使用している:.Net4.0のProcess.Start()を使用してExcelファイルを開くことができない

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 64ビット。私は、次のコードに変更して、デバッグモード

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

を実行すると、結果はそれがプロセスの起動に失敗を意味し、他のブロックに入り、ということである7.5

おかげ

をIIS。

なぜですか?

+3

コードは例外なく実行されていますか?あなたはそれらを食べているようです。 –

+0

catch {}を削除してもう一度やり直すと、例外がスローされ、何がスローされたかがわかります。 – Mathieu

+0

キャッチ(例外)の代わりにcatch(Exception ex){//印刷例外}と書いてみてください。 – 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

関連する問題