簡體   English   中英

C#中的Word自動化。 使用SaveAs時出錯

[英]Word Automation in C#. Error while using SaveAs

嘗試在C#中實現單詞自動化時嘗試Save as Document Object時出現以下錯誤:

 System.Runtime.InteropServices.COMException 

(0x80020005):類型不匹配。 (HRESULT異常:0x80020005(DISP_E_TYPEMISMATCH))

  at Microsoft.Office.Interop.Word.DocumentClass.SaveAs(Object& 

FileName,Object&FileFormat,Object&LockComments,Object&Password,Object&AddToRecentFiles,Object&WritePassword,Object&ReadOnlyRecommended,Object&EmbedTrueTypeFonts,Object&SaveNativePictureFormat,Object&SaveFormsData,Object&SaveAsAOCELetter,Object&Encoding,Object&InsertLineBreaks,Object&AllowSubstitutions,Object&LineEnding,Object&AddBiDiMarks)

  at TestWordAutomation.Form1.SaveAs(String 

文件名)在D:\\ dotnet \\ WordAutomation \\ TestWordAutomation \\ TestWordAutomation \\ Form1.cs:第246行

  at TestWordAutomation.Form1.button4_Click(Object 

發件人,EventArgs e)在D:\\ dotnet \\ WordAutomation \\ TestWordAutomation \\ TestWordAutomation \\ Form1.cs:第557行

我這樣調用Save As方法:

MySaveAs("Doc1.doc");
MySaveAs("Doc2.doc");
MySaveAs("Doc3.doc");

//I have a MySaveAs function
 public void  MySaveAs(string fileName)
        {
            object FileName = null, FileFormat = null, LockComments = null, _Password = null, AddToRecentFiles = null, _WritePassword = null, _ReadOnlyRecommended = null, _EmbedTrueTypeFonts = null, SaveNativePictureFormat = null, _SaveFormsData = null, SaveAsAOCELetter = null, Encoding = null, InsertLineBreaks = null, AllowSubstitutions = null, LineEnding = null, AddBiDiMarks = null;
            FileName = (object) fileName;
            oDoc.SaveAs(ref FileName, ref FileFormat, ref LockComments, ref _Password, ref AddToRecentFiles,
                        ref _WritePassword, ref _ReadOnlyRecommended, ref _EmbedTrueTypeFonts,
                        ref SaveNativePictureFormat, ref _SaveFormsData, ref SaveAsAOCELetter, ref Encoding,
                        ref InsertLineBreaks, ref AllowSubstitutions, ref LineEnding, ref AddBiDiMarks);
        }

任何人都可以幫我解決這個問題嗎?

“很痛苦。 我記得使用Word / Excel Interop工作。 不要輕率,但其中一個參數的類型不正確。 希望以下有所幫助,但我做了很多這些類型的定義。

static object s_missing = System.Reflection.Missing.Value;
static object s_true = true;
static object s_false = false;
static object s_forcesave = Word.WdSaveOptions.wdSaveChanges;

static Word._Application s_app = null;
...
return s_app.Documents.Open ( ref filename,
   ref s_missing,
   ref s_missing,
   ref s_missing,
   ref s_missing,
   ref s_missing,
   ref s_missing,
   ref s_missing,
   ref s_missing,
   ref s_missing,
   ref s_missing,
   ref s_missing,
   ref s_missing,
   ref s_missing,
   ref s_missing,
   ref s_missing );

你不能將null傳遞給任何interop函數調用 - 改為使用Missing.Value(如Kenny所建議)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM