Слово VBA: как ссылаться на раздел, без его номера? - PullRequest
0 голосов
/ 28 июня 2018

Я работаю над документом, для которого я хочу установить защиту для одного конкретного раздела.

У меня есть 6 секций, секция № 5 должна быть защищена.

Позже я хотел бы создать макрос, который будет работать только в разделе 5, условие для ввода макроса будет следующим:

If ActiveDocument.Range(0, Selection.Sections(1).Range.End).Sections.Count = 5 Then ...

Else: MsgBox "Not in the right section"

End If

Однако, если пользователь вставит раздел в документ, раздел № 5 станет разделом № 6 (всего 7 разделов) и т. Д.

Sub TestSections()




Dim myDoc As Word.Document
Set myDoc = ActiveDocument

Dim rngSec1 As Word.Range
Dim rngSec2 As Word.Range
Dim rngSec3 As Word.Range
Dim rngSec4 As Word.Range
Dim rngSec5 As Word.Range



Set rngSec1 = myDoc.Sections(1).Range
Set rngSec2 = myDoc.Sections(2).Range
Set rngSec3 = myDoc.Sections(3).Range
Set rngSec4 = myDoc.Sections(4).Range
Set rngSec6 = myDoc.Sections(6).Range


rngSec1.Editors.Add wdEditorEveryone
rngSec2.Editors.Add wdEditorEveryone
rngSec3.Editors.Add wdEditorEveryone
rngSec4.Editors.Add wdEditorEveryone
rngSec6.Editors.Add wdEditorEveryone

myDoc.Protect wdAllowOnlyReading

End Sub

В этом коде я защищаю весь документ и даю доступ ко всем разделам, кроме 5.

Мой вопрос: как можно ссылаться на раздел 5, даже если он больше не раздел 5?

Спасибо

1 Ответ

0 голосов
/ 28 июня 2018

Мне удалось идентифицировать мой раздел, поместив закладку (выбрав название «section5») в начале ее (Вставка -> Закладка)

Затем, когда мне нужно получить текущий номер раздела, который я хочу использовать, я запускаю этот код:

Public Sub GetBookmrkSection()

Dim bookmrk As Range
Dim bookmrk_section As String

Set bookmrk = ActiveDocument.Bookmarks("Section6").Range
bookmrk_section = CStr(bookmrk.Information(wdActiveEndSectionNumber))
MsgBox bookmrk_section
Set bookmrk = Nothing

End Sub
...