2016-05-03 84 views
0

我將轉換爲C#的Word VBA宏具有以下行。 我非常特別在Document對象上使用Close()方法。我還沒有發現任何問題可以完全回答我的問題。有相似問題,如這一個:Compile time warning when using 'Microsoft.Office.Interop.Word._Document.Close'將VBA宏轉換爲C時Document.Close()上的C#歧義錯誤#

但看着它,我無法弄清楚我必須使用的確切演員。

ActiveDocument.Close wdDoNotSaveChanges 

我轉換這對C#這樣的:

using Microsoft.Office; 
using Microsoft.Office.Interop; 
using Word = Microsoft.Office.Interop.Word; 

Object oMissing = System.Reflection.Missing.Value; 
Word.Document oWordDoc = new Word.Document(); 

oWordDoc.Close(Word.WdSaveOptions.wdDoNotSaveChanges, oMissing, oMissing); 
在最後一行我得到下面的模糊誤差

但是:

Ambiguity between method 'Microsoft.Office.Interop.Word._Document.Close(ref object, ref object, ref object)' and non-method 'Microsoft.Office.Interop.Word.DocumentEvents2_Event.Close'. Using method group.

很明顯,我不能重新命名Close Word的方法(我猜),所以我試圖投我的oWordDoc,但似乎沒有任何工作。

有人可以解釋一下如何做到這一點嗎?謝謝。

回答

2

將其轉換爲Microsoft.Office.Interop.Word._Document,其中不包含該事件。

((Microsoft.Office.Interop.Word._Document)oWordDoc).Close(Word.WdSaveOptions.wdDo‌​NotSaveChanges, oMissing, oMissing); 
+0

是啊,我想這樣的:'(Microsoft.Office.Interop.Word._Document)oWordDoc.Close(Word.WdSaveOptions.wdDoNotSaveChanges,oMissing,oMissing);'但是它給出了一個編譯器錯誤:**」無法將類型'void'轉換爲'Microsoft.Office.Interop.Word._Document'「** – ib11

+0

查看更新後的答案。 – niksofteng

+1

@nikhilvartak請留下評論,建議讓SLaks包含更改,或將其作爲您的答案發布 - 您不應該編輯其他答案的解決方案(即使您嘗試提供幫助,這很可能是正確的! ) – Rob