Я работаю над надстройкой Office. Я застрял в проблеме. Я хочу добавить текстовый документ в качестве связанного объекта в другой текстовый документ, используя С# и VSTO. Я покопался и обнаружил, что для этого нужно использовать поле INCLUDETEXT. В VSTO функция InsertFile имеет параметр с именем "Link", если для этого параметра установлено значение true, то указанный текстовый документ вставляется как связанный объект.
Вот мой код:
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, range,ConfirmConversions, Link, Attachment);
не показывает никаких ошибок в редакторе или во время компиляции, но когда я использую свою надстройку в офисе, она выдает ошибку в этой строке и говорит "Ошибка команды"
Вот скрин ошибки
Вот StackTrace ошибки
Но когда я просто использую эту строку, она не дает ошибки, и файл вставляется, но не как связанный объект.
Globals.ThisAddIn.Application.Selection.InsertFile(FileName)
В чем проблема ? Также скажите мне, есть ли у вас лучшая идея вставить связанный объект (документ Word) в другой документ. ?
INCLUDETEXT "C:\\final.docx" hashim
в качестве кода поля. Если есть проблема с именем файла или закладки, вы, скорее всего, получите лучшее сообщение об ошибке, чем сообщение от COMException. - person Dirk Vollmar   schedule 14.09.2016