2016-09-14 45 views
0

我正在使用Office加載項。我陷入了一個問題。我想使用c#和VSTO將Word文檔作爲鏈接對象添加到另一個Word文檔中。我深入挖掘,發現爲此目的,我必須使用「INCLUDETEXT」字段。在VSTO中,InsertFile函數具有一個名爲「Link」的參數,如果此參數設置爲true那麼將指定的word文檔作爲鏈接對象插入。Selection.InsertFile C#錯誤

這是我的代碼:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Microsoft.Office.Tools.Ribbon; 
using Microsoft.Office.Interop.Word; 
using System.Windows.Forms; 
using System.Drawing; 

namespace WordAddIn1 
{ 
    public partial class MyRibbon 
    { 
     string txt = ""; 
     bool hhh = false; 
     string file_name = ""; 
     string file_path = ""; 
     DataObject o; 
     string cmp=""; 

     private void MyRibbon_Load(object sender, RibbonUIEventArgs e) 
     { 
      checkBox1.Checked = false; 
      o = (DataObject)Clipboard.GetDataObject(); 

     } 

     private void checkBox1_Click(object sender, RibbonControlEventArgs e) 
     { 

      if (checkBox1.Checked == true && (o.ContainsText()||o.ContainsImage())) 
      { 


       txt = Globals.ThisAddIn.Application.Selection.Text.Trim(); 
       file_name = Globals.ThisAddIn.Application.ActiveDocument.Name; 
       file_path = Globals.ThisAddIn.Application.ActiveDocument.Path; 
       cmp = file_path + "\\" + file_name; 
       hhh = txt.Length > 0; 

       if (hhh) 
       { 

        Console.Beep(); 

       } 
      } 

      else 
      { 

       if (o.ContainsText() || o.ContainsImage()) 
       { 
        string FileName = "C:\\final.docx"; 
        object range = "hashim"; 

        object ConfirmConversions = false; 
        object Link = true; 
        object Attachment = false; 


        Globals.ThisAddIn.Application.Selection.InsertFile(FileName, range,ConfirmConversions ,Link, Attachment); 

        Form1 frm = new Form1(file_name.ToString(),file_path.ToString()); 
        frm.Show(); 

       } 

      } 

    } 



    } 
} 

Globals.ThisAddIn.Application.Selection.InsertFile(文件名,範圍,ConfirmConversions,鏈接,附件);

不顯示或編譯過程中,但是當我用我的外接辦公室它給在這一行錯誤,說「命令失敗」

下面是錯誤截圖

編輯器中的任何錯誤

enter image description here

這是錯誤

enter image description here

的堆棧跟蹤

但是,當我簡單地使用這一行時,它不會給出錯誤,並且插入的文件不會作爲鏈接的對象。

Globals.ThisAddIn.Application.Selection.InsertFile(文件名)

問題出在哪裏?另外告訴我,如果你有更好的主意將鏈接對象(Word文檔)插入到其他文檔。 ?

+1

要插入的文檔是否包含名爲「hashim」的書籤? –

+0

@DirkVollmar是它包含 –

+1

您是否能夠手動成功插入INCLUDETEXT字段?在* Insert *選項卡上選擇* Quick Parts *> * Fields ... *,然後選擇左側的INCLUDETEXT,然後單擊* Field Codes *按鈕。然後輸入'INCLUDETEXT「C:\\ final.docx」hashim'作爲字段代碼。如果文件或書籤名稱存在問題,則可能會得到比COMException中的更好的錯誤消息。 –

回答

0

說明:上述代碼沒有錯誤。問題在於,我的文字文件中沒有書籤對象,這些書籤對象將被鏈接。我創建了一個名稱爲「hashim」,它的作用就像一個魅力。

解決方案:

如果我們去的文檔的insertFile

Summary: 
     //  Inserts all or part of the specified file. 
     // 
     // Parameters: 
     // FileName: 
     //  Required String. The path and file name of the file to be inserted. If you don't 
     //  specify a path, Microsoft Word assumes the file is in the current folder. 
     // 
     // Range: 
     //  Optional Object. If the specified file is a Word document, this parameter refers 
     //  to a bookmark. If the file is another type (for example, a Microsoft Excel worksheet), 
     //  this parameter refers to a named range or a cell range (for example, R1C1:R3C4). 
     // 
     // ConfirmConversions: 
     //  Optional Object. True to have Word prompt you to confirm conversion when inserting 
     //  files in formats other than the Word Document format. 
     // 
     // Link: 
     //  Optional Object. True to insert the file by using an INCLUDETEXT field. 
     // 
     // Attachment: 
     //  Optional Object. True to insert the file as an attachment to an e-mail message. 

查看參數範圍如果我們鏈接的文件是一個「Word文檔」然後應該有一個名稱在該文件中創建的書籤。您必須在Range對象中傳遞該書籤名稱。像

object Range = "hashim"; 

這裏哈希姆是鏈接到其他文檔文件文件中的書籤名稱。

如果沒有指定書籤,那麼它必須給出錯誤。

現在,如果鏈接對象是Excel文檔,則範圍對象必須包含像

object Range = "R1C1:R3C4"; 

這裏細胞信息「R1C1:R3C4」在Excel中,我們要鏈接單元格區域在我們的文件中。

注意:我們可以添加完整或部分的excel或word文檔。請參閱Range Object文檔。

希望答案很清楚。 謝謝