我们正在对MS Word加载项进行更新,允许用户使用以下函数将MS Word文件插入到中央MS Word文档中:
//Created rng variable
Microsoft.Office.Interop.Word.Range rng = Globals.ThisAddIn.Application.Selection.Range;
//MS Interop method.
Globals.ThisAddIn.Application.Selection.InsertFile(
filename,
rng,//<--Added range
ref missing, //Confirm Conversions
ref falsevalue, //Link file
ref falsevalue //Attachment
);
第二个参数:
ref missing, //Range - For Word can be a bookmark
似乎说我们可以传递一个可以作为书签的Range参数(我们可以 可以用来删除添加的内容(如果需要),但是我们无法找到任何演示如何完成此操作的实现示例。
MSDN描述此参数如下:
<小时/> 的 范围
类型:System.Object
可选对象。
如果指定的文件是Word文档,则此参数引用书签。如果文件是另一种类型(例如,Microsoft Excel工作表),则此参数引用命名范围或单元格范围(例如,R1C1:R3C4)。
<小时/> 由于我们要在文本中插入新书签,因此我们假设需要:
然而在这一点上,由于我们找不到任何如何实现这一目标的例子,我们处于停滞状态。
我们还找到了这样的例子:
http://www.c-sharpcorner.com/article/add-replace-and-remove-bookmarks-in-word-using-c-sharp/
但它们的实现看起来并不像是使用Word Interop或Selection.InsertFile()。
Intellisense似乎并不表示Microsoft.Office.Interop.Word.Bookmark上的Range属性:
感谢。
答案 0 :(得分:0)
书签(您的第一个链接)是Bookmark个对象的集合。书签具有Range属性。使用它。
答案 1 :(得分:-1)
类型:System.Object
可选对象。
如果指定的文件是Word文档,则此参数引用a 书签。如果文件是另一种类型(例如,Microsoft Excel 工作表),此参数引用命名范围或单元格范围 (例如,R1C1:R3C4)。
Meant是插入文件的书签或范围标识符。
<强> @Edit:强>
如果您搜索解决方案以在现有书签中插入文件而不删除书签,请尝试以下操作:
var bmRange = bookmark.Range;
string bookmarkName = bookmark.Name;
// plus 1 on the end prevents startRange to collapse on insert.
// be shure there is something after the end
var startRange = document.Range(bmRange.Start, bmRange.End + 1);
object missing = System.Reflection.Missing.Value;
object ConfirmConversions = false;
object Link = false;
object Attachment = false;
bmRange.InsertFile("C:\\somefile.docx", ref missing, ref ConfirmConversions, ref Link, ref Attachment);
// after insert the startRange contains the inserted content + 1
var newRange = document.Range(startRange.Start, startRange.End - 1);
document.Bookmarks.Add(bookmarkName, ref newRange);
稍加修改(你只需要从其他地方获取bmRange和bookmarkName)这也可以在没有现有书签的情况下使用
<强> @ EDIT2:强> 为Microsoft.Office.Interop.Word.Document:
重新制造为扩展方法public static void ReplaceBookmarkContentWithFile(this Microsoft.Office.Interop.Word.Document document, string path, Microsoft.Office.Interop.Word.Range range, string bookmarkName)
{
var startRange = document.Range(range.Start, range.End + 1);
object missing = System.Reflection.Missing.Value;
object ConfirmConversions = false;
object Link = false;
object Attachment = false;
range.InsertFile(path, ref missing, ref ConfirmConversions, ref Link, ref Attachment);
object newRange = document.Range(startRange.Start, startRange.End - 1);
document.Bookmarks.Add(bookmarkName, ref newRange);
}
称之为:
document.ReplaceBookmarkContentWithFile(path, range, bookmarkName);
适用于...现有书签(如果范围是书签。范围)或不;)