Поскольку в качестве цели вы всегда указываете весь «диапазон» документа, каждый раз при вставке все содержимое документа заменяется.
Это правильно, что вы работаете с Range
объектом, а не с выделением, но это помогает, если вы думаете о диапазоне как выделении.Если вы выделите все (Ctrl + A), то вставьте то, что было выбрано, заменено тем, что вставлено.Все, что назначено для диапазона, заменит содержимое диапазона.
Чтобы решить эту проблему, нужно «свернуть» диапазон - думать об этом, как нажимая клавишу со стрелкой вправо или влево, чтобы «свернуть»."выбор к его начальной или конечной точке.В объектной модели это метод Collapse
, который принимает параметр, указывающий, свернуться ли до начальной или конечной точки (см. Код ниже).
Обратите внимание, что я также изменил используемый кодdocument.Content
вместо Document.Range
.Content
- это свойство, которое возвращает весь текст документа;Range
- это метод, который ожидает начальную и конечную точку, определяющую Range
.Использование свойства является предпочтительным методом для всего документа.
if (startEnd.Contains(','))
{
arrSpecificPage = startEnd.Split(',');
for (int i = 0; i < arrSpecificPage.Length; i++)
{
range.Start = doc.GoTo(WdGoToItem.wdGoToPage, WdGoToDirection.wdGoToAbsolute, arrSpecificPage[i]).Start;
range.End = doc.GoTo(WdGoToItem.wdGoToPage, WdGoToDirection.wdGoToAbsolute, arrSpecificPage[i]).End;
range.Copy();
Word.Range targetRange = newDocument.Content
targetRange.Collapse(Word.WdCollapseDirection.wdCollapseEnd);
targetRange.Paste();
}
newDocument.SaveAs(outputSplitDocpath);
}