03.12.2015

Печать определенного листа в десятках и сотнях документов

Столкнулся с проблемой: необходимо перепечатать первый лист в разных документах. Ладно, если этих документов 10. Но их 200!
Открывать каждый - не наш путь. Вот работающее решение на VBA и скрипт в приложении.

Печать сотен документов без их открытия
Печать заданных листов, диапазонов листов

Код:
Private Sub CommandButton1_Click()
  Dim sMyDir As String
  Dim sDocName As String
  Dim СписокФайлов As FileDialogSelectedItems
  Set СписокФайлов = GetFilenamesCollection("Выберите файлы для печати:", ThisDocument.Path)   ' выводим окно выбора
  If СписокФайлов Is Nothing Then Exit Sub  ' выход, если пользователь отказался от выбора файлов
  strA = InputBox("Какие страницы печатать?", "Опция печати", "1")
  For Each File In СписокФайлов
        Application.PrintOut Range:=wdPrintRangeOfPages, Pages:=strA, FileName:=File
  Next
End Sub

Function GetFilenamesCollection(Optional ByVal Title As String = "Выберите файлы для обработки", _
                             Optional ByVal InitialPath As String = "c:\") As FileDialogSelectedItems
    ' функция выводит диалоговое окно выбора нескольких файлов с заголовком Title,
    ' начиная обзор диска с папки InitialPath
    ' возвращает массив путей к выбранным файлам, или пустую строку в случае отказа от выбора
    With Application.FileDialog(3) ' msoFileDialogFilePicker
        .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath
        If .Show <> -1 Then Exit Function
        Set GetFilenamesCollection = .SelectedItems
    End With
End Function