Форум по VBA и MS Office

Word => Макросы в Word => Тема начата: BoomZoom от 12 декабря 2015, 23:46

Название: Определить номер страницы с полем (activex textbox)
Отправлено: BoomZoom от 12 декабря 2015, 23:46
Подскажите пожалуйста, у меня есть задача - определить номера страниц в открытом файле Word, если на них присутствуют поля (см. пример во вложении).
Можно ли такую задачу решить с помощью макроса?

[вложение удалено администратором]
Название: Re: Определить номер страницы с полем (activex textbox)
Отправлено: Администратор от 14 декабря 2015, 14:14
Макрос
Sub Main()

    Dim docAct As Document, inlineshp As InlineShape, shp As Shape, strMsg As String
   
    '1. Vba-именование активного файла.
    Set docAct = ActiveDocument
   
    '2. Просмотр инлайншейпов.
    For Each inlineshp In docAct.InlineShapes
        ' Если это ActiveX.
        If inlineshp.Type = wdInlineShapeOLEControlObject Then
            ' Если это activex-текстбокс.
            If inlineshp.OLEFormat.ClassType = "Forms.TextBox.1" Then
                strMsg = strMsg & inlineshp.Range.Information(wdActiveEndAdjustedPageNumber) & vbCr
            End If
        End If
    Next inlineshp
   
    '3. Просмотр шейпов.
    For Each shp In docAct.Shapes
        ' Если это ActiveX.
        If shp.Type = msoOLEControlObject Then
            ' Если это activex-текстбокс.
            If shp.OLEFormat.ClassType = "Forms.TextBox.1" Then
                strMsg = strMsg & shp.Anchor.Information(wdActiveEndAdjustedPageNumber) & vbCr
            End If
        End If
    Next shp
   
    '4. Сообщение.
    If strMsg = "" Then
        MsgBox "В файле нет текстбоксов.", vbInformation
    Else
        MsgBox "В файле есть текстбоксы на этих страницах:" & vbCr & strMsg, vbExclamation
    End If
   
End Sub
[свернуть]
Название: Re: Определить номер страницы с полем (activex textbox)
Отправлено: BoomZoom от 14 декабря 2015, 18:14
Круто! Работает! Большое спасибо!!!