Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Скрытый текст

6.7K
27 мая 2004 года
LeoCh
7 / / 27.05.2004
Подскажите как гарантированно и максимально быстро определить наличие скрытого текста в документе Word большого объема (с оглавлением и т.п.)

Заранее спасибо
648
02 июня 2004 года
Tiraspolsky
220 / / 23.07.2003
Цитата:
Originally posted by LeoCh
Подскажите как гарантированно и максимально быстро определить наличие скрытого текста в документе Word большого объема (с оглавлением и т.п.)

Заранее спасибо



If Document.Range.Font.Hidden=False then
'нет скрытого текста
Else
'скрытый текст есть
End if

6.7K
02 июня 2004 года
LeoCh
7 / / 27.05.2004
Товарищи "бывалые" и "профессионалы", я так понял никто не сталкивался с подобной проблемой. Может кто-нибудь хоть статейку толковую видел.
648
02 июня 2004 года
Tiraspolsky
220 / / 23.07.2003
Цитата:
Originally posted by LeoCh
Товарищи "бывалые" и "профессионалы", я так понял никто не сталкивался с подобной проблемой. Может кто-нибудь хоть статейку толковую видел.



Вместо 'спасибо', которое было заранее, получил невнятный отлуп. Ты напиши конкретно, чем тебя не устраивает подсказка? Одним оператором максимально быстро, как ты просил, определяется налиxе скрытого текста. Может тебе надо не то, что ты спрашиваешь?

6.7K
02 июня 2004 года
LeoCh
7 / / 27.05.2004
Уважаемый, прежде чем давать советы, неплохо проверять свои предложения (например на документе хотя бы из 5 страниц).
648
03 июня 2004 года
Tiraspolsky
220 / / 23.07.2003
Цитата:
Originally posted by LeoCh
Уважаемый, прежде чем давать советы, неплохо проверять свои предложения (например на документе хотя бы из 5 страниц).



Проверил. И сочинил алгоритм. Пользуйся.

Код:
Private Sub Document_Open()
    Dim isHidden As Boolean
    isHidden = test(0, ThisDocument.Range.End)
    If isHidden Then Debug.Print "Скрытый текст есть" Else Debug.Print "Скрытого текста нет"
End Sub

Public Function test(a As Long, b As Long) As Boolean
    Dim c As Long, h(1) As Long, i As Byte
    c = (a + b) \ 2
    If test Then Exit Function
    test = False
    While ((c - a) > 0 And (b - c) > 0)
        For i = 0 To 1
            h(i) = IIf(i = 0, ThisDocument.Range(a, c).Font.Hidden, ThisDocument.Range(c, b).Font.Hidden)
        Next
        test = (h(0) = -1) Or (h(1) = -1)
        If test Then Exit Function
        If h(0) = 0 And h(1) = 0 Then
            Exit Function
        ElseIf h(0) = wdUndefined And h(1) = wdUndefined Then
            test = (test(a, c) Or test(c, b))
            Exit Function
        ElseIf h(0) = wdUndefined Then
            b = c
            c = (a + b) \ 2
        ElseIf h(1) = wdUndefined Then
            a = c
            c = (a + b) \ 2
        End If
    Wend
End Function
6.7K
04 июня 2004 года
LeoCh
7 / / 27.05.2004
Не обижайся, спасибо за алгоритм. А вообще глубины Word-а бездонны, к примеру интересен случай, когда атрибут установлен на пустой параграф. Но это так, к слову.
Пока
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог