1

Тема: Полезные функции

Предлагаю в данной теме ряд полезныx функций......

2

Re: Полезные функции

Вот 1-я функция ListTableStyleName создающая список стилей относящихся к форматированию таблиц:

Public Function ListTableStyleName(Optional Doc As Document, Optional Msg As Boolean, Optional StyleType As WdStyleType) As Variant
Dim sty As Style, lst() As String, i As Integer, info As String
i = 0
info = ""
    If IsMissing(Doc) = False Then
        Set Doc = ActiveDocument
    End If
        For Each sty In Doc.Styles
            If InStr(1, LCase(sty.NameLocal), "табл") > 1 Or _
                InStr(1, LCase(sty.NameLocal), "tabl") > 1 Then
                    Select Case StyleType
                        Case 0
                            i = i + 1
                            ReDim Preserve lst(0 To i)
                            lst(i) = sty.NameLocal
                            info = info & i & ". " & sty.NameLocal & Chr(13)
                        Case Is > 0
                            If sty.Type = StyleType Then
                                i = i + 1
                                ReDim Preserve lst(0 To i - 1)
                                lst(i - 1) = sty.NameLocal
                                info = info & i & ". " & sty.NameLocal & Chr(13)
                            End If
                    End Select
            End If
        Next sty
    If i = -1 Then i = i + 1
    If Msg = True Then
        Select Case i
            Case 0
                MsgBox "Нет стилей указанного типа!!!", vbInformation
            Case Is > 0
                MsgBox "Всего: " & i & Chr(13) & info, vbInformation
        End Select
    End If
End Function

Эта функция имеет 3 необязательных аргумента:
1. Doc - если аргумент пропущен, то функция проверяет стили в Активном документе
2. Msg - по умолчанию False, если True выводит список стилей на экран
3. StyleType - по умолчанию = 0, если StyleType = 0, создается список стилей всех типов, иначе создается список соответсвующего типа WdStyleType
Пример выполнения:

info = ListTableStyleName(, True)

Присваивает info значение функции ListTableStyleName списка стилей таблиц Активного Документа, выводит его на экран, использует все типы стилей.

info = ListTableStyleName(Application.Documents(2), , wdStyleTypeParagraph)

Присваивает info значение функции ListTableStyleName списка стилей таблиц 2 Документа Приложения, не выводит его на экран, использует тип стиля Абзац и связанны шрифт.

ПРИМЕР ИСПОЛЬЗОВАНИЯ:
Допустим для улучшения структуры и качества оформления документа в таблицах должны использоваться только стили, в названии которых присутствуют буквосочетания "табл" или "tabl", тогда можно написать код проверки стилей используемых в таблице документа:

lst = ListTableStyleName(, , wdStyleTypeParagraph) ' Список стилей абзацев для таблиц
strlst = Join(lst, ",") ' Строка со списком стилей
    For each sty in ActiveDocument.Styles
        With Selection.Tables(1).Range.Find
            .Format = True
            .Style = sty.NameLocal
            .Execute
                   If .Fond = True and InStr(1, strlst, sty.NameLocal) < 1 Then
                       boo = False
                       Exit For
                   End If
         End With
    Next For
    If boo = False Then
       ' Код действий с таблицей при обнаружении постороннего стиля в таблице
    End If

3

Re: Полезные функции

If .Fond = True and InStr(1, strlst, sty.NameLocal) < 1 Then
      boo = False
      Exit For
End If

С коде допустил очепятку надо писать .Found, а не .Fond

If .Found = True and InStr(1, strlst, sty.NameLocal) < 1 Then
      boo = False
      Exit For
End If