Страницы: 1
RSS
Как в VBA Word достать номера абзацов?
 

Добрый день.
Как в VBA Word достать номера абзацов? (отмечено красным на скрине)
У меня есть код, который обрабатывает таблицы в Word'e и берёт последний абзац перед каждой таблицей. Есть необходимость достать номер тоже.
Код:

Код
Sub KPI()
Dim wd As New Document
Set wd = ActiveDocument
tc = wd.Tables.Count
ReDim mas(1 To tc, 1 To 10)
For i = 1 To tc
    If i = 1 Then
        Set ps = wd.Range(0, wd.Tables(1).Range.Start - 1).Paragraphs
    Else
        Set ps = wd.Range(wd.Tables(i - 1).Range.End, wd.Tables(i).Range.Start - 1).Paragraphs
    End If
    For lp = ps.Count To 1 Step -1
        If Len(ps(lp)) > 5 Then
            mas(i, 1) = CleanString(ps(lp))
            Exit For
        End If
    Next
    For k = 1 To wd.Tables(i).Rows.Count
        mas(i, k + 1) = CleanString(wd.Tables(i).Cell(k, 2).Range)
    Next
Next
Set xl = CreateObject("Excel.Application")
xl.Visible = True
With xl.Workbooks.Add.Sheets(1)
    .Cells(1).Resize(tc, 10).Value = mas
    With .UsedRange
        .ColumnWidth = 27
        .Columns(2).ColumnWidth = 72
        .Columns(6).ColumnWidth = 72
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = True
    End With
End With
Set xl = Nothing
End Sub
 
Добрый.
Не пойму, почему такая странная нумерация
Код
    Dim Doc As Document, ps As Paragraph
    Set Doc = ActiveDocument
    For Each ps In Doc.Paragraphs
        If ps.Range.ListFormat.ListType > 0 Then
            Set List = ps.Range.ListFormat
            ListString = List.ListString
            Text = Trim(ps.Range.Text)
            Debug.Print ListString, Text
        End If
    Next

Изменено: doober - 16.11.2022 00:30:48
 
doober,  спасибо.

Цитата
Не пойму, почему такая странная нумерация
:cry:  
 
doober, я вытащил ListLevelNumber - выходит большое число по проблемным абзацам. Может, что-то нужно подправить?
 
Скорее всего файл не правильный и создан не правильными пчелами.
Первый раз такую нумерацию встречаю
Страницы: 1
Наверх