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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.08.2013, 17:31   #1
aaa123qwe
Новичок
Джуниор
 
Регистрация: 29.08.2013
Сообщений: 3
По умолчанию печать первой страницы документов

Здравствуйте. Подскажите, пожалуйста, макрос с помощью которого можно бы было распечатать только первые страницы из выделенных документов.
То есть есть в папке 100 файлов, нужно выделить 20 и чтобы распечаталось только первые страницы из этих двадцати.
Предпологают, что можно сделать как-то макрос чтобы, например печатал только первые страницы всех открытых файлов или как-то так. Вообще не представляю как такое можно реализовать, но функция очень нужная, а её нет. ОЧЕНЬ тяжело каждый раз открывать по 50 документов и жать печать первой страницы.
Спасибо!
aaa123qwe вне форума Ответить с цитированием
Старый 29.08.2013, 19:00   #2
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

20 выбранных документов в одном каталоге или в разных
----
и вообще как отбираются 20 из 100
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 30.08.2013, 08:40   #3
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Из проводника печатать хлопотное дело, нужно писать расширение для оболочки. А если выбирать непосредственно в макросе, тогда можно так:
Код:
Option Explicit

Sub PrintAllFirstPages()
    Dim sFileNames As Variant
    Dim i As Integer
    'Получение путей выбранных файлов
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Выберите файлы для печати"
        .Filters.Clear
        .Filters.Add "Все документы", "*.doc;*.docx"
        .AllowMultiSelect = True
        If .Show Then
            ReDim sFileNames(.SelectedItems.Count - 1)
            For i = 1 To .SelectedItems.Count
                Debug.Print .SelectedItems(i)
                sFileNames(i - 1) = .SelectedItems(i)
            Next i
        Else: Exit Sub
        End If
    End With
    'Печать первой страницы
    For i = 0 To UBound(sFileNames)
        With Documents.Open(sFileNames(i), AddToRecentFiles:=False, ReadOnly:=True)
            .PrintOut Background:=False, Range:=wdPrintRangeOfPages, Pages:="1"
            .Close False
        End With
    Next i
End Sub
Предполагается, что принтер, на который нужно печатать, уже выбран
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 30.08.2013 в 08:44.
viter.alex вне форума Ответить с цитированием
Старый 30.08.2013, 10:31   #4
aaa123qwe
Новичок
Джуниор
 
Регистрация: 29.08.2013
Сообщений: 3
По умолчанию

Цитата:
Сообщение от shanemac51 Посмотреть сообщение
20 выбранных документов в одном каталоге или в разных
----
и вообще как отбираются 20 из 100
Да просто, какие нужно такие и печатаются. А нужными могут быть любые, не обязатально 20 и не обязатально по порядку.
aaa123qwe вне форума Ответить с цитированием
Старый 30.08.2013, 10:38   #5
aaa123qwe
Новичок
Джуниор
 
Регистрация: 29.08.2013
Сообщений: 3
По умолчанию

Цитата:
Сообщение от viter.alex Посмотреть сообщение
Из проводника печатать хлопотное дело, нужно писать расширение для оболочки. А если выбирать непосредственно в макросе, тогда можно так:
Спасибо! Подскажите пожалйста, если нужно печатать все страницы, кроме первой (при тех же условиях), то как это реализовать? Если изменить на
Код:
Pages:="2-"
Будет ли это правильно? Извините, нет возможности проверить на печате.
И ещё, будет ли запоминаться последняя выбранная папка или придётся каждый раз её заново искать?
aaa123qwe вне форума Ответить с цитированием
Старый 30.08.2013, 13:21   #6
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Если нужно печатать все, кроме первой, тогда нужно изменить эти строки:
Код:
Dim nPagesCount As Long
nPagesCount = .Range.ComputeStatistics(wdStatisticPages)
.PrintOut Background:=False, Range:=wdPrintRangeOfPages, Pages:="2-" & Str(nPagesCount)
Лучше всего сделать другой макрос с этими изменёнными строками. Или добавить окно с выбором, что печатать
Последняя выбранная папка будет запоминаться
Лучше день потерять — потом за пять минут долететь!©

Последний раз редактировалось viter.alex; 30.08.2013 в 13:36.
viter.alex вне форума Ответить с цитированием
Старый 10.12.2017, 21:14   #7
rick1177
Пользователь
 
Регистрация: 15.02.2010
Сообщений: 59
По умолчанию А что будет при печати в pdf

Посмотрите, пожалуйста!
Вот, например, такой набор файлов. Этот набор файлов надо, например, напечатать первые страницы в pdf использованием adobe принтера. В момент печати появляется окно, где пишется название файла и с вопросом, куда сохранить. Но название показывается не исходного файла... и получается, что ты вынужден много раз переименовывать....
Помогите адаптировать макрос... плиз...
Вложения
Тип файла: rar Первые листы.rar (1.36 Мб, 25 просмотров)
rick1177 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Печать документов word Александр Бутырин Общие вопросы Delphi 2 10.12.2011 19:05
Печать документов... Busine2009 Microsoft Office Word 13 11.07.2009 11:50
Печать документов. Busine2009 Microsoft Office Word 8 18.06.2009 14:36
Печать документов в Word... Busine2009 Microsoft Office Word 1 09.06.2009 07:48
Печать HTML документов Максим_Леонидович HTML и CSS 2 17.01.2009 14:16