2011-06-29 26 views
1

私はおそらくBDDE.EXEを呼び出しているスプレッドシートを持っています。 Excelでこのスプレッドシートを開くと、すべて正常に動作します。私は式が "= BDDE"で始まるセルの値を見ることができます。私はC#を使用して、同じファイルを開くと、Excelが最初のアラートC#でExcelをエミュレートする

Remote data not accesible. 
To access this data Excel needs to start another application. ... 
Start application 'BDDE.EXE'? 

を表示それから私は、クリック何どんなにしかし、 - はい]または[いいえ、数式が更新され、前回の再計算からのすべての値が失われます。

その後、XlCalculationをManualに設定してExcelを再計算しないようにしました。この変更後にopenが機能しなくなり、COMExceptionがスローされました(他の情報はありません)。

System.Runtime.InteropServices.COMException (0x800A03EC): Exception from HRESULT 
: 0x800A03EC 
at Microsoft.Office.Interop.Excel.ApplicationClass.set_Calculation(
XlCalculation RHS) 

私は完全に詰まってしまった。それはすべての数字を台無しにするので再計算することはできません。 Exceptionをスローすると、XlCalcualtionをManualに設定できません。

何か助けていただければ幸いです。

+0

アプリケーションインスタンスの「Application.EnableEvents = False」を設定することはできますか?それは、workbook_openイベントでマクロを実行しようとしているようです。 – Alain

答えて

2

最初にブックを開くことなく、計算プロパティを設定することはできません。これはCatch 22のように聞こえるが、実際にはここでは防止しようとしている '計算'ではない - 外部ソースにリンクされたセルを更新したくないだけだ。

Openメソッドは、オプションのUpdateLinksパラメータを受け取ります。これをfalseに設定すると、うまくいくはずです。

2

XlCalculationプロパティを設定する前にブックを開く必要があるExcelエンジンには制限があります。したがって、最も簡単な解決策はcreate a new workbookになり、実際のデータでファイルを開く前にXlCalculationを希望のモードに設定します。

関連する問題