Excel это не сложно

Основные форумы => Вопросы по Word и VBA => Тема начата: Alex12345 от 10.11.2018, 20:38:45



Название: Необходимо после каждого листа добавить новый лист
Отправлено: Alex12345 от 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


Название: Re:Необходимо после каждого листа добавить новый лист
Отправлено: Дмитрий Щербаков(The_Prist) от 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.


Название: Re:Необходимо после каждого листа добавить новый лист
Отправлено: Alex12345 от 11.11.2018, 14:06:13
При запуске макроса выходит сообщение:

Compile error:
Duplicate declaration in current scope.


Название: Re:Необходимо после каждого листа добавить новый лист
Отправлено: Дмитрий Щербаков(The_Prist) от 11.11.2018, 14:18:57
Ну это Вы уже сами смотрите где Вы вставили код так, что у Вас дублируется название процедуры. Наверняка мой код вставили сразу под своим, а название процедуры Vstavka изменить уже поленились. Советую изучить хотя бы основы работы с VBA, раз такая ошибка доставляет проблемы :)


Название: Re:Необходимо после каждого листа добавить новый лист
Отправлено: Alex12345 от 11.11.2018, 14:26:28
Да спасибо Дмитрий все получилось. А какие книги посоветуете почитать ? С чего  лучше начать ?


Название: Re:Необходимо после каждого листа добавить новый лист
Отправлено: Дмитрий Щербаков(The_Prist) от 11.11.2018, 17:03:26
Книги (https://www.excel-vba.ru/general/knigi-dlya-izucheniya-excel-i-vba/)