При работе с объектом Selection
он выглядит "интуитивно понятным", при написании кода для манипулирования Word не так точно, как при использовании объектов Range
. Вы можете думать о Range
как о невидимом выделении, с важными отличиями в том, что код
- может работать с несколькими
Range
объектами - , на которые пользователь не может повлиять
Range
(нажатие на экран или нажатие клавиш со стрелками изменяет Selection
) - отслеживание, где
Range
находится в любой заданной точке кода, является надежным
Изменение кода в вопросе для работы с «целью» Range
может выглядеть следующим образом.
(Обратите внимание, что я также добавил Style
объекты для определяемых стилей. Это гораздо надежнееи намного меньше набирает текст для работы с объектами, а не с такими конструкциями, как objWrdDoc.Styles("S3")
.)
Dim S2 as Word.Style, S3 as Word.Style 'As Object if using late-binding
With objWrdDoc
Set S2 = .Styles.Add("S2")
Set S3 = .Styles.Add("S3")
S2.Font.Bold = True
S3.Font.Bold = False
End With
Dim objRange as Word.Range 'As Object if using late-binding
Set objRange = objWrdApp.Selection.Range
With objRange
.Text = vbCr 'Chr(13) = paragraph mark
'The new text should follow the inserted paragraph mark
'Like pressing right-arrow to "collapse" a selection
.Collapse wdCollapseEnd
'When working with ranges, apply the formatting after writing the text
.Text = "I want to have bold "
.Style = S2
.Collapse wdCollapseEnd
.Text = "and not bold text in one line."
.Style = S3
End With