Следующее работает для меня, поскольку требования в вопросе идут.
Пожалуйста, не забудьте поставить Option Explicit
вверху кодовой страницы. Это заставит вас объявлять («тусклые») переменные, но также сэкономит время и усилия, поскольку предотвратит опечатки и предупредит вас о других проблемах.
A Sentence
в Word возвращает объект Range
, поэтому код ниже деласер MySent As Range
. Это обеспечивает цель Range
для метода Bookmarks.Add
.
Если вы не будете больше ничего делать с закладкой, Set bkm =
при добавлении закладки не обязательно. Я оставил его, поскольку он объявлен в коде, указанном в вопросе.
Нет необходимости зацикливать коллекцию закладок - особенно потому, что их нет - они добавляются.
Я также добавил код для именования закладок.
Sub tryAddBmarkatSentence()
Dim doc As Word.Document
Dim MySent As Word.Range
Dim bmark As Bookmark
Application.ScreenUpdating = False
Set doc = ActiveDocument
For Each MySent In doc.Sentences
Set bmark = doc.Bookmarks.Add(Name:="bmark" & _
MySent.Information(wdActiveEndAdjustedPageNumber) & "_" &_
MySent.Information(wdFirstCharacterLineNumber) & "_" & _
MySent.Information(wdFirstCharacterColumnNumber), Range:=MySent)
'bmark name would have added info of page, line, and col number. here as example is pagenumber.
Next
End Sub