FWIW Наиболее простым для вставки одного документа в другой является использование метода InsertFile
, так что вставляемый документ даже не нужно открывать.
Проблема с подходом ввопрос в том
docTarget.Content.InsertAfter (docSource.Range.FormattedText)
Необходимо использовать свойство FormattedText
с обеих сторон.Также лучше использовать Range
объекты, по крайней мере, на «целевой» стороне, поскольку InsertAfter
не может работать вместе с FormattedText
.(CollapseEnd
ничего не делает в коде вопроса, потому что он не применяется к независимому Range
объекту.)
Следующее должно работать
Dim rngTarget as Word.Range
Set rngTarget = docTarget.Content
rngTarget.Collapse wdCollapseEnd
rngTarget.FormattedText = docSource.Content.FormattedText
Это будетбыстрее, чем при использовании Selection
, и экран не будет "мерцать".Это также оставит буфер обмена пользователя нетронутым.
Единственный раз, когда Selection.Copy
- это правильная вещь, когда свойства документа должны встретиться: верхние и нижние колонтитулы, размер страницы и т. Д. FormattedText
не будет копироваться свойства уровня раздела , только свойства Range
.