Страница 1 из 1

Работа со списками - макрос

Добавлено: 28 дек 2009, 21:12
darklumen
если в тексте встречается список с разными маркерами, то как-то можно их оформить одним общим маркером, например 1) 2) 3) и тд?

например:
1) траляля;
2. траляля;
c. траляля.

а надо

1) ...
2) ...
3) ...

Re: Работа со списками - макрос

Добавлено: 28 дек 2009, 22:50
Busine2009
Это до выходных. Я и без макросов не всегда могу совладать со списками, а в Word 2007 там вообще не знаешь, что делать.

Re: Работа со списками - макрос

Добавлено: 01 янв 2010, 09:58
Busine2009

Код: Выделить всё

Sub Lists()
Dim oList As List
With ListGalleries(wdNumberGallery).ListTemplates(2).ListLevels(1)
    .NumberFormat = "%1)"
    .TrailingCharacter = wdTrailingTab
    .NumberStyle = wdListNumberStyleArabic
    .NumberPosition = CentimetersToPoints(0.63)
    .Alignment = wdListLevelAlignLeft
    .TextPosition = CentimetersToPoints(1.27)
    .TabPosition = CentimetersToPoints(1.27)
    .StartAt = 1
End With
For Each oList In ActiveDocument.Lists
    oList.ApplyListTemplate ListTemplate:=ListGalleries(wdNumberGallery).ListTemplates(2), _
     ContinuePreviousList:=False, DefaultListBehavior:=wdWord10ListBehavior
Next
End Sub

Re: Работа со списками - макрос

Добавлено: 03 янв 2010, 00:52
darklumen
спасибо огромное. а не подскажите, как сделать так, чтобы в списках все слова начинались в маленьких букв? +)

Re: Работа со списками - макрос

Добавлено: 03 янв 2010, 09:58
Busine2009
1 вариант - не учитывает, что первым словом может быть аббревиатура:

Код: Выделить всё

Sub ListsSmallLower()
Dim oListParagraph As Paragraph
Application.ScreenUpdating = False
For Each oListParagraph In ActiveDocument.ListParagraphs
    oListParagraph.SelectNumber
    Selection.MoveRight
    Do While Selection.Text = Chr(32)
        Selection.Delete
    Loop
    Selection.Range.Case = wdLowerCase
Next
Application.ScreenUpdating = True
End Sub
2 вариант - учитывается, что первым словом может быть аббревиатура:

Код: Выделить всё

Sub ListsSmallExtend()
Dim oListParagraph As Paragraph
Application.ScreenUpdating = False
For Each oListParagraph In ActiveDocument.ListParagraphs
    oListParagraph.SelectNumber
    Selection.MoveRight
    Do While Selection.Text = Chr(32)
        Selection.Delete
    Loop
    Selection.MoveRight unit:=wdWord, Extend:=wdExtend
    If Selection.Characters(2).Case <> wdUpperCase Then
        Selection.Range.Case = wdLowerCase
    End If
Next
Application.ScreenUpdating = True
End Sub