Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
19.04.2024, 06:09:39

Войти
На форуме добавлена возможность подписки на RSS-ленты любого раздела форума. Подписаться можно, нажав на иконку RSS , расположенную левее наименования раздела.
33 242 Сообщений в 5 457 Тем от 6 758 Пользователей
Последний пользователь: Сергей2662
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Word и VBA
| | |-+  Необходимо после каждого листа добавить новый лист
Страниц: [1]   Вниз
Печать
Автор Тема: Необходимо после каждого листа добавить новый лист  (Прочитано 17768 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Alex12345
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 5


Просмотр профиля E-mail
« : 10.11.2018, 20:38:45 »

Всем привет!
Как в приведенном примере (см.прикр.файл - ТЕКСТ_ПРИМЕР) сделать следующее: необх-мо с первого листа и последующие листы 2,3 и т.д. добавлять новые листы ?
В данном примере доб.только в конце листы.
Код: (vb)
Option Explicit
Sub Vstavka()
Dim Count As Integer, i As Integer
Count = 10   'здесь задается количество вставляемых в документ страниц
For i = 1 To Count
Selection.EndKey Unit:=wdStory
Selection.InsertBreak Type:=wdPageBreak
Next i
End Sub
« Последнее редактирование: 10.11.2018, 20:54:04 от vikttur » Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #1 : 10.11.2018, 22:41:29 »

с первого листа и последующие листы 2,3 и т.д. добавлять новые листы ?
Хотите после каждого имеющегося листа добавить пустой?
Наверное, как-то так должно получиться:
Код: (vb)
Sub Vstavka()
    Dim Count As Long, i As Long, lAllCnt As Long
    Count = 10   'здесь задается количество вставляемых в документ страниц
    With Selection
        lAllCnt = .Information(wdNumberOfPagesInDocument)
        If lAllCnt > Count Then
            i = lAllCnt - Count
            lAllCnt = lAllCnt - i + 1
        End If
       
        For i = lAllCnt To 2 Step -1
            .GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, name:=i
            .InsertBreak Type:=wdPageBreak
        Next
    End With
End Sub

я добавил проверку, если листов для вставки указано больше, чем есть в книге. В этом случае добавляется после каждого заполненного. Т.е. если листов в книге 5, а указано для вставки 10 - вставлено будет только 5.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Alex12345
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 5


Просмотр профиля E-mail
« Ответ #2 : 11.11.2018, 14:06:13 »

При запуске макроса выходит сообщение:

Compile error:
Duplicate declaration in current scope.
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #3 : 11.11.2018, 14:18:57 »

Ну это Вы уже сами смотрите где Вы вставили код так, что у Вас дублируется название процедуры. Наверняка мой код вставили сразу под своим, а название процедуры Vstavka изменить уже поленились. Советую изучить хотя бы основы работы с VBA, раз такая ошибка доставляет проблемы Улыбка
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Alex12345
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 5


Просмотр профиля E-mail
« Ответ #4 : 11.11.2018, 14:26:28 »

Да спасибо Дмитрий все получилось. А какие книги посоветуете почитать ? С чего  лучше начать ?
« Последнее редактирование: 11.11.2018, 15:18:31 от Alex12345 » Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #5 : 11.11.2018, 17:03:26 »

Книги
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru