public static void DeleteParagraphFromRange(this Wd.Range range) { Wd.Range prev = range.Duplicate; try { range.Expand(Wd.WdUnits.wdParagraph); if (!range.ContainsTableCell()) range.Delete(); } catch { prev.Delete(); } }
public static Wd.Range MoveOutOfContentControl(this Wd.Range range, Wd.WdCollapseDirection collapse = Wd.WdCollapseDirection.wdCollapseEnd) { Wd.ContentControl control = range.GetSurroundingContentControl(); if (control != null) if (collapse == Wd.WdCollapseDirection.wdCollapseStart) { if (range.Start >= control.Range.Start) range.Start = control.Range.Start - 1; if (range.End >= control.Range.Start) range.End = control.Range.Start - 1; } else { range.Start = control.Range.End; if (range.Start <= control.Range.End) range.Start = control.Range.End + 1; if (range.End <= control.Range.End) range.End = control.Range.End + 1; } if (range.ContainsTableCell()) range.MoveEnd(Wd.WdUnits.wdCharacter, -1); //if (range.InContentControlOrContainsControls()) // Then it's because the Content Control is the first thing in the document //{ // range.Application.Selection.HomeKey(Wd.WdUnits.wdStory); // range = range.Application.Selection.Range; //} return range; }