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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2024, 13:02   #1
Eltanin
Новичок
Джуниор
 
Регистрация: 15.10.2024
Сообщений: 2
По умолчанию Макрос для нумерации таблиц в границах страниц/глав

Доброго времени суток. Ежедневно работаю с отчетами по структуре не отличающимися от дипломов (титульник, содержание, текст с заголовками, приложения), поэтому есть большая потребность автоматизировать всё что только можно. Сейчас ищу наиболее оптимальный способ для автоматической нумерации таблиц формата "Таблица 1.1" (первая таблица первой главы). На этом же форуме найден прекрасно работающий макрос для нумерации всех таблиц в документе. Однако при всём его удобстве, в документе есть таблицы, нумерация которых не требуется (например на титульнике или в заключении), и их количество может быть немалым. Так вот задача: ограничить действие макроса в рамках заданных пользователем страниц или в пределах глав "Введение-Заключение". Поиск в сети не дал результатов, изучение VBA, хоть меня и интересует, но отнимет какое-то количество времени (наверняка не малое), поэтому обращаюсь за помощью к знатокам. Возможно это простая операция возможно нет. Буду признательна за любую помощь или совет в каком направлении копать.
Ссылка на тему с макросом: https://www.programmersforum.ru/showthread.php?t=261750
Непосредственно макрос:
Код:
Public Sub TableNum()
Dim Table As Table, Caption As CaptionLabel
    On Error Resume Next
    Set Caption = CaptionLabels("Таблица")
        If Err.Number > 0 Then
            CaptionLabels.Add Name:="Таблица"
        End If
    For Each Table In ActiveDocument.Tables
        Table.Range.InsertCaption Label:="Таблица", TitleAutoText:= _
            "InsertCaption1", Title:="", Position:=wdCaptionPositionAbove, _
            ExcludeLabel:=0
    Next Table
End Sub
Eltanin вне форума Ответить с цитированием
Старый 23.10.2024, 12:55   #2
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,137
По умолчанию

Цитата:
Сообщение от Eltanin Посмотреть сообщение
в пределах глав "Введение-Заключение"
я так понимаю их две?
вот и выяснить начало и окончание этих глав=рэнж и в этих рэнжах не искать\нумеровать таблицы - профит?
Ципихович Эндрю вне форума Ответить с цитированием
Старый 24.10.2024, 10:01   #3
Eltanin
Новичок
Джуниор
 
Регистрация: 15.10.2024
Сообщений: 2
По умолчанию

Цитата:
я так понимаю их две?
Нет, между введением и заключением ещё 6-7 глав. Но если я правильно вас поняла, количество глав между введением и заключением роли всё равно не играет. Почти случайно нашла три строчки решающие проблему (но не идеально). В общем теперь макрос работает в заведомо выделенном тексте. Однако нередко отчеты бывают и по 100, и по 150 страниц, поэтому удобнее всего назначить началом заголовок "Введение", а концом соответственно "Заключение". Но как я уже сказала, я человек далекий от программирования и на данный момент копать глубже у меня нет времени. Если появится прогресс - отпишусь.
Код:
Public Sub TableNum()
Dim MyRange As Range
Set MyRange = ActiveDocument.Range
MyRange.SetRange Start:=Selection.Start, End:=Selection.End
Dim Table As Table, Caption As CaptionLabel
    On Error Resume Next
    Set Caption = CaptionLabels("Таблица")
        If Err.Number > 0 Then
            CaptionLabels.Add Name:="Таблица"
        End If
    For Each Table In MyRange.Tables
        Table.Range.InsertCaption Label:="Таблица", TitleAutoText:= _
            "InsertCaption1", Title:="", Position:=wdCaptionPositionAbove, _
            ExcludeLabel:=0
    Next Table
End Sub
Eltanin вне форума Ответить с цитированием
Старый 24.10.2024, 10:16   #4
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,137
По умолчанию

вот то что нарыто:
Код:
Public Sub TableNum() ' Объявляем публичную подпрограмму с именем TableNum
    Dim MyRange As Range ' Объявляем переменную MyRange типа Range
    Set MyRange = ActiveDocument.Range ' Устанавливаем MyRange как диапазон всего активного документа
    MyRange.SetRange Start:=Selection.Start, End:=Selection.End ' Устанавливаем диапазон MyRange от начала до конца текущего выделения

    Dim Table As Table, Caption As CaptionLabel ' Объявляем переменные Table типа Table и Caption типа CaptionLabel
    On Error Resume Next ' Игнорируем ошибки, чтобы продолжить выполнение кода
    Set Caption = CaptionLabels("Таблица") ' Пытаемся установить Caption как метку "Таблица"
    
    ' Если возникла ошибка (например, метка не найдена), добавляем новую метку "Таблица"
    If Err.Number > 0 Then 
        CaptionLabels.Add Name:="Таблица" ' Добавляем новую метку с именем "Таблица"
    End If
    
    ' Проходим по всем таблицам в диапазоне MyRange
    For Each Table In MyRange.Tables 
        ' Вставляем подпись для каждой таблицы
        Table.Range.InsertCaption Label:="Таблица", TitleAutoText:= _
            "InsertCaption1", Title:="", Position:=wdCaptionPositionAbove, _
            ExcludeLabel:=0
    Next Table ' Переходим к следующей таблице
End Sub ' Завершаем подпрограмму
чувствуете где могут быть засады?
Ципихович Эндрю вне форума Ответить с цитированием
Старый 24.10.2024, 10:20   #5
Ципихович Эндрю
Старожил
 
Регистрация: 24.01.2011
Сообщений: 3,137
По умолчанию

Цитата:
Сообщение от Ципихович Эндрю Посмотреть сообщение
Next Table ' Переходим к следующей таблице
а них как и у всего (у тех двух глав) имеется Start и End
вот и весь сказ, он в Вашу=ТС пользу
Ципихович Эндрю вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление текстовой нумерации страниц caute Microsoft Office Word 5 05.12.2016 08:48
Изменить размер шрифта нумерации страниц alexan0308 Microsoft Office Word 5 21.03.2013 20:10
Вопрос по нумерации страниц xela1980 Microsoft Office Excel 4 04.04.2011 16:02
макрос для нумерации строк Olya1985 Microsoft Office Excel 5 07.01.2011 23:46
Восстановление нумерации страниц... Busine2009 Microsoft Office Word 0 07.06.2009 19:01