Я работаю над надстройкой Office. Я застрял в проблеме. Я хочу добавить документ Word в качестве связанного объекта в другой документ с использованием C# и VSTO. Я копаю и обнаружил, что для этой цели я должен использовать поле «INCLUDETEXT». В VSTO InsertFile fuction имеет параметр с именем «Ссылка», если этот параметр установлен в true, тогда указанный документ слова вставлен как связанный объект.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 (FileName, диапазон, ConfirmConversions, Link, приложение);
не показывает какой-либо ошибки в редакторе или во время компиляции, но, когда я использую надстройку в офисе дает ошибку на этой линии и сказал «Command Failed»
Вот скриншот ошибки
Вот StackTrace из Error
Но когда я просто использую эту строку, она не дает ошибок, и файл вставлен, но не как связанный объект.
Globals.ThisAddIn.Application.Selection.InsertFile (FileName)
Где проблема? Также скажите, есть ли у вас идея вставить связанный объект (документ Word) в другой документ. ?
Вставляет ли документ в закладки с именем «hashim»? –
@DirkVollmar да он содержит –
Можете ли вы успешно вставить поле INCLUDETEXT вручную? На вкладке * Вставить * выберите * Быстрые части *> * Поля ... *, затем выберите INCLUDETEXT слева и нажмите кнопку * Полевые коды *. Затем введите «INCLUDETEXT» C: \\ final.docx «hashim' в качестве кода поля. Если есть проблема с файлом или именем закладки, вы, скорее всего, получите сообщение об ошибке, отличное от сообщения COMException. –