Под 4 уровнем я имею ввиду элементы содержания, как если бы в документе было поле вида { TOC \o "4-4" \n \h \z \u }, тогда обновив его мы и получим элементы содержания 4 уровня
В Вашем случае если присвоить переменную и вставить её в коде после строки
For Each p In ActiveDocument.Paragraphs
Имя = p.Style.Description
В переменную Имя попадает текст вида: Шрифт: (по умолчанию) Таймс Нэв Роман и т. д.
То есть не то, что нужно
Также пользуясь случаем хотел спросить для какой цели открывать документ в режиме только для чтения
А также поясните строку
Application.Documents.Open "Гражданский кодекс.doc", , ReadOnly, , , , , , , , , , False
Запятые зачем нужны, опечатка???
Sub q177169()
' Application.Documents.Open "Гражданский кодекс.doc", , ReadOnly, , , , , , , , , , False
Application.Documents("Гражданский кодекс.doc").Activate
Dim flag As Boolean
Dim Ar() As String
Dim st As String
Dim i, j, pred, pos, j, Uidx As Long
flag = True
Uidx = 0
i = 1
While (flag) And (i < ActiveDocument.Fields.Count)
If ActiveDocument.Fields(i).Code Like "*4-4*" Then ' подберите подходящий критерий для определения нужного поля
For j = 1 To ActiveDocument.Fields(i).Result.Paragraphs.Count
st = ActiveDocument.Fields(i).Result.Paragraphs.Item(j).Range.Text
pred = InStr(1, st, " ")
pos = InStr(pred + 1, st, " ")
Uidx = Uidx + 1
ReDim Preserve Ar(Uidx)
Ar(Uidx) = Left(st, pos) & "ГК РФ"
MsgBox Ar(Uidx)
Next j
flag = False
End If
Wend
' Application.Documents("Гражданский кодекс.doc").Close
' А здесь, наверное, самое время сделать что-либо с данными из массива
End Sub
На всякий случай смотрю на Ваше "тестовое файлы к вопросу 177169" в форуме вроде ссылка, выкрашено синим цветом, но не открывается, уточните пожалуйста
У Вас есть шанс ответить на вопрос № 177006, на него так никто и не ответил, эти два вороса почти одно и то же, вопрос 177006 более обширный
Dim i, j, pred, pos, j, Uidx As Long
Dim i, j, pred, pos, Uidx As Long
Application.Documents.Open "D:\\Рабочая папка\\УК РФ.doc", , ReadOnly, , , , , , , , , , False
Application.Documents("D:\\Рабочая папка\\УК РФ.doc").Activate ' на этой строке получаю неверное имя файла
Application.Documents.Open "d:\\Mydoc\\RfPro\\УК РФ.doc", , ReadOnly, , , , , , , , , , False
Application.Documents("d:\Mydoc\RfPro\УК РФ.doc").Activate
При открытом документе УК РФ.doc его запустил и компьютер завис
Видно, что он что то делает, но как я понял внутри макроса ходит по кругу
Нет ему ни конца ни края
Файл УК.doc по ссылке https://rfpro.ru/upload/1856
Давайте пока с открытым этим файлом решим!!
Dim flag As Boolean
Dim Ar() As String
Dim st As String
Dim i, j, pred, pos, Uidx As Long
flag = True
Uidx = 0
i = 1
While (flag) And (i < ActiveDocument.Fields.Count)
If ActiveDocument.Fields(i).Code Like "*4-4*" Then '
For j = 1 To ActiveDocument.Fields(i).Result.Paragraphs.Count
st = ActiveDocument.Fields(i).Result.Paragraphs.Item(j).Range.Text
pred = InStr(1, st, " ")
pos = InStr(pred + 1, st, " ")
Uidx = Uidx + 1
ReDim Preserve Ar(Uidx)
Ar(Uidx) = Left(st, pos) & "УК РФ"
MsgBox Ar(Uidx)
Next j
flag = False
End If
i = i + 1
Wend
Так уж исправьте до конца теперь вы знаете о чём идёт речь, только меняйте только критерий поиска, а то документ он с Консультанта +, всегда такой
HYPERLINK \l "_Toc253153541"
HYPERLINK \l "_Toc253153542"
HYPERLINK \l "_Toc253153543"
HYPERLINK \l "_Toc253153544"
HYPERLINK \l "_Toc253153545"
HYPERLINK \l "_Toc253153546"
HYPERLINK \l "_Toc253153547"
HYPERLINK \l "_Toc253153548"
HYPERLINK \l "_Toc253153549"
HYPERLINK \l "_Toc253153550"
HYPERLINK \l "_Toc253153551"
HYPERLINK \l "_Toc253153552"
взять в этом документе .... все эти заголовки 4 уровня
Под 4 уровнем я имею ввиду элементы содержания, как если бы в документе было поле вида { TOC \o "4-4" \n \h \z \u }, тогда обновив его мы и получим элементы содержания 4 уровня
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.