Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / поиск абзацев без перебора / 3 сообщений из 3, страница 1 из 1
02.06.2011, 10:22
    #37290701
alexnec
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск абзацев без перебора
в документе word нужно отформатировать "шапки" - текст расположенный в правом верхнем углу листа. для этого производится поиск абзацев (или просто текста), имеющих большой отступ. документы могут быть большими, поэтому перебор всех абзацев для проверки их отступа может занять много времени. как обойтись без полного перебора? поиск средствами word можно вести по заданному значению отступа. эта операция выполняется быстро. может быть есть возможность искать не по точному значению отступа, а по значению из интервала? или еще вариант: можно ли получить список всех абзацных отступов и осуществлять поиск по значениям этого списка?
...
Рейтинг: 0 / 0
02.06.2011, 11:11
    #37290816
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск абзацев без перебора
alexnec,

примерно так--доли секунды на 2000 абзацев
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
Sub w110602_1044()
Dim pr As Paragraph, s1, j1, j2, dt1, dt2, ss
dt1 = Timer
ss = "№№`текст"
For Each pr In Word.ActiveDocument.Paragraphs
s1 = pr.Range.Text
j1 = j1 +  1 
If Asc(s1) =  9  Or pr.FirstLineIndent <>  0  Then
j2 = j2 +  1 
Do While Asc(s1) <  32 
s1 = Mid(s1,  2 )
Loop

Debug.Print j1, Mid(s1,  1 ,  10 )
ss = ss & Chr( 13 ) & Chr( 10 ) & j1 & "` " & Mid(s1,  1 ,  20 )
End If
Next pr
dt2 = Timer
Debug.Print j1, dt2 - dt1; "c"
'''создание таблицы строк с отступом
Word.Documents.Add
Selection.Range.Text = ss
Selection.WholeStory
    Application.DefaultTableSeparator = "`"
    Selection.ConvertToTable Separator:=wdSeparateByDefaultListSeparator, _
        NumColumns:= 2 , NumRows:=j2 +  1 , AutoFitBehavior:=wdAutoFitFixed
    With Selection.Tables( 1 )
        .Style = "Сетка таблицы"
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = False
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = False
    End With
    Selection.Tables( 1 ).AutoFitBehavior (wdAutoFitContent)
End Sub

...
Рейтинг: 0 / 0
02.06.2011, 11:13
    #37290821
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск абзацев без перебора
ПЕНСИОНЕРКА,

Код: plaintext
1.
2.
If Asc(s1) =  9  Or pr.FirstLineIndent <>  0  or mid(s1, 1 , 4 )="    " Then

...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / поиск абзацев без перебора / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]