Попробуйте вместо этого, используя Copy
и (плохо документированный) метод ExecuteMso
.Вам нужно использовать Copy
для диапазона (для захвата форматирования), а затем вы можете эффективно сделать то же самое, что щелкнуть правой кнопкой мыши Вставить + Сохранить исходное форматирование параметр:
If docWord.Bookmarks.Exists(xlName.Name) Then
xlName.RefersToRange.Copy
docWord.Bookmarks(xlName.Name).Select
docWord.Application.CommandBars.ExecuteMso "PasteSourceFormatting"
End If
В качестве альтернативы, и это может быть лучше, поскольку ExecuteMso
является асинхронным и может привести к проблемам синхронизации:
xlName.RefersToRange.Copy
docWord.Bookmarks(xlName.Name).Range.PasteAndFormat 16 'wdFormatOriginalFormatting