Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2012, 12:40   #1
DJTreeno
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 146
Восклицание Как обновить только CaptionLabels???

Доброго всем времени суток!!!

Подскажите пожалуйста макрос который обновляет только CaptionLabels не все поля (Fields). Второй день бьюсь ничего не придумывается((

Заранее благодарен!!!
DJTreeno вне форума Ответить с цитированием
Старый 07.06.2012, 14:47   #2
Вождь
Форумчанин
 
Аватар для Вождь
 
Регистрация: 29.09.2008
Сообщений: 378
По умолчанию

В упрощенном виде где-то так:
Код:
Sub A()

Dim F As Word.Field
Dim CL As Word.CaptionLabel
Dim S1 As String, S2 As String

    For Each F In ActiveDocument.Fields
        ' поле автонумерации
        If F.Type = Word.wdFieldSequence Then
            S1 = F.Code.Text
            ' ищем названия в коде поля
            For Each CL In Application.CaptionLabels
                S2 = CL.Name
                If InStr(1, S1, S2, VBA.vbTextCompare) <> 0 Then
                    ' нашли
                End If
            Next CL
        End If
    Next F
    
End Sub
Макросы на заказ и готовый пакет - http://mtdmacro.ru/
Вождь вне форума Ответить с цитированием
Старый 08.06.2012, 12:53   #3
DJTreeno
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 146
По умолчанию

Уважаемый, Вождь, спасибо за ответ!!!
Но видимо у меня не все так просто - в моем документе имеется огромное количество разных связей с Excel, авто нумерация страниц (по ГОСТу она у меня двойная снизу и сверху, при этом верхняя зависит от нижней т.е. отличается на определенное значение), и нумерация ссылок на таблицы (выглядит как "такие-то данные приведены в таблице 1")

Вот мой макрос, который вставляет слово "таблице 1" в конец предложения.

Sub ТаблицаСноска()
'
' ТаблицаСноска Макрос
'
'
CaptionLabels.Add Name:="таблице"
With CaptionLabels("таблице")
.NumberStyle = wdCaptionNumberStyleArabic
.IncludeChapterNumber = False
End With
Selection.InsertCaption Label:="таблице", TitleAutoText:="InsertCaption1", _
Title:="", Position:=wdCaptionPositionBelow, ExcludeLabel:=0
End Sub

Ваш макрос в моем случае не выполняет цикл, а остается на строке:

If F.Type = Word.wdFieldSequence Then

Т.е. почему-то оно не равно

Может как-то можно привязаться к названию CaptionLabel??? (CaptionLabels.Add Name:="таблице")

Помогите пожалуйста!
DJTreeno вне форума Ответить с цитированием
Старый 08.06.2012, 12:57   #4
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,061
По умолчанию

>Т.е. почему-то оно не равно
а чему же оно равно нужное?
может его и ставить, то чему равно
Ципихович Эндрю вне форума Ответить с цитированием
Старый 08.06.2012, 13:31   #5
DJTreeno
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 146
По умолчанию

Что означает "F.Type"?

Или как написать For Each F In ActiveDocument.Fields , но не во всех полях, а именно в нужных?
DJTreeno вне форума Ответить с цитированием
Старый 08.06.2012, 13:34   #6
DJTreeno
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 146
По умолчанию

Почему-то у меня F.Type = или 13 или 37 или 88, а Word.wdFieldSequence постоянно 12
DJTreeno вне форума Ответить с цитированием
Старый 08.06.2012, 13:49   #7
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,061
По умолчанию

Цитата:
Сообщение от DJTreeno Посмотреть сообщение
Что означает "F.Type"?
это тип поля

'текстовое поле имеет тип № 70
'флажок имеет тип № 71
'поле со списком имеет тип № 83
'гиперссылка имеет тип № 88
'поле запускающее макрос имеет тип № 51
'поле TOC имеет тип № 13
'поле { } имеет тип № 3
а про какое у Вас речь не пойму выложите файл Ворда 2003 с этим полем
Ципихович Эндрю вне форума Ответить с цитированием
Старый 08.06.2012, 13:51   #8
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,061
По умолчанию

>Word.wdFieldSequence постоянно 12
и пусть будет, а то начнётся хаос
Ципихович Эндрю вне форума Ответить с цитированием
Старый 08.06.2012, 14:00   #9
DJTreeno
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 146
По умолчанию

Не получится он весит 80 мб и состоит из разных файлов, т.е. главный документ(((
DJTreeno вне форума Ответить с цитированием
Старый 08.06.2012, 14:01   #10
DJTreeno
Форумчанин
 
Регистрация: 09.06.2011
Сообщений: 146
По умолчанию

Так, а почему же он F.Type не хочет быть 12?
DJTreeno вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обновить indy до 10.5.5 TwiX Работа с сетью в Delphi 14 27.07.2011 18:31
Одни из jpg файлов реальные JPEG а другие только название. как загрузиь только картинки? AgressiveBehavior Общие вопросы Delphi 1 16.09.2009 09:39
как обновить Dr web? jenja Безопасность, Шифрование 2 09.03.2009 14:23
Как обновить?? Vremya-Dengy Общие вопросы Delphi 6 17.02.2009 22:44
как обновить листбокс? counter Win Api 2 16.02.2009 11:42