Циклический просмотр диапазонов для печати определенных слайдов в PowerPoint с VBA - PullRequest
0 голосов
/ 06 ноября 2018

Я пытался печатать с этим или похожим макросом, и это сработало, я экспортировал, а затем потерпел крах. Тогда я не смог заставить это работать после перезапуска.

Макрос должен выполнить цикл, введенный пользователем несколько раз, затем напечатает индексы первого слайда (заголовка) и 5 ​​дополнительных слайдов, кратные количеству циклов, выданных на раздаточный материал 6 слайдов.

  • Первая страница: 1, 3-7
  • Вторая страница: 1, 8-12
  • Третья страница: 1, 13-17
  • и т.д.

Теперь выдается ошибка:

Ошибка времени выполнения '-2147467259 (80004005)

Сбой метода «PrintOut» объекта «_Presentation»

Ниже мой сценарий. Идеи?

Sub CHPrint()

    Dim oIndexArray(0 To 5) As Integer, slideIndexArray(0 To 5) As Integer, numCases As Integer

    ' Prompt user for how many cases to print (# pages, # loops)
    numCases = InputBox("How many cases to print?")

    ' Initialize first index of array to 1 (first slide).  This will not change.
    slideIndexArray(0) = 1

    ' Initialize other indices of array to the first set of slides to print (3-7)
    For i = 1 To 5
        oIndexArray(i) = 3 + (i - 1)
        slideIndexArray(i) = oIndexArray(i)
        Next i

    ' For each loop, select slides to print (1&3-7; 1&8-12; 1&13-17; etc.) and print
    For i = 0 To numCases - 1

        ActivePresentation.Slides.Range(slideIndexArray).Select

        With ActivePresentation
            With .PrintOptions
                .ActivePrinter = "LN104142 on LocalHost"
                '.ActivePrinter = "Adobe PDF"
                .OutputType = ppPrintOutputSixSlideHandouts
                .RangeType = ppPrintSelection
                End With
            .PrintOut  ' "method 'printout' of object '_presentation' failed"

            End With

            ' For each time through the first loop (i), reinitialize selection (1&3-7; 1&8-12; 1&13-17; etc.)
            For j = 1 To 5
                slideIndexArray(j) = oIndexArray(j) + (5 * (i + 1))
            Next j

        Next i

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...