Страницы: 1
RSS
Последовательная печать номера страницы в многостраничном документе, печать разных номеров страниц на одинаковых листах
 
Добрый день!
Поиском темы максимально отражающей суть, я не смог найти. Задача в следующем: в файле эксель набрана форма журнала учета, состоящего из 1 листа-обложки, 1 листа-левого разворота, 1 листа-правого разворота. На печать отправляется обложка,  и 100 листов-разворотов (ручная двусторонняя печать). Как проставить нумерацию печатаемых листов в правом верхнем углу документа, чтобы не делать тупо сто одинаковых листов в книге?  В примере это должно быть в ячейке Z1, я выделил её цветом. Конечно можно "разрезать" разворот и поместить каждый на отдельный лист, но сути задачи это не поменяет, возможно ли как-то (макросом, доп.листом и т.д.) организовать такую печать, при этом задавая начальное и конечное значение выводимое на печать, к примеру "напечатать 35 листов с нумерацией от 5 до 40" и т.д.
 
Может я не правильно сформулировал задачу? Уважаемые дайте хоть направление куда копать...
 
Доброе время суток.
Цитата
edkudin написал:
куда копать...
На мой взгляд. Выводить номера страниц в колонтитулах. Тогда можно настроить положение - как, слева или справа страницы, будет выводиться её номер. Для этого нужно в настройках страницы включить разные колонтитулы для чётных и не чётных страниц.
 
Думаю макросом вполне можно прогнать в цикле.
 
Как  я понял печатается пустой бланк и типа N раз, то есть N копий. Соответвенно номер страницы будет всегда 1, ну или 2  .... но не 1,2,3,4,5
Да, VBA  который  сделает N несвязанных заданий перед каждым  в нужную ячеку поместить нужный номер - не большая проблема. Ждите "макрушников"

Saaaaaanjaaaaaaaa :-)
По вопросам из тем форума, личку не читаю.
 
В работе не проверял. В макросах я новичок, не судите строго.
Код
Sub Print_docs()
        For n = 1 To 100
        Range("Z1") = n
        Sheets("разворот").PrintOut Copies:=n, Collate:=True, _
        IgnorePrintAreas:=False
        Next
End Sub
Изменено: cuprum - 24.01.2018 14:33:16 (Опечатка в коде)
 
Цитата
cuprum написал:
В макросах я новичок
Вы не представляете какой я новичок в макросах... но начал читать...
Все обдумав, я решил что самый простой вариант будет таким: каждую страницу своей книги я набираю на отдельном листе в файле.
Потом начинаю печать листов в том порядке как мне нужно, каждый разворот(страницу) сам по себе
А вот когда доходит до печати листов с нумерацией мне и нужен макрос следующего вида: или окно ввода значений печати или задействовать три ячейки за пределами границы печати, допустим в данном случае АА1, АА2, АА3- в первой начальное значение, во второй конечное, в третьей количество печатаемых листов
И тогда  при выполнении макроса печати он мне отпечатает мою единственную страницу АА3-раз с нумерацией в ячейке Z1 с номера АА1 по номер АА2. правда тут на всякий случай нужна "защита от дурака", в том смысле что если введены допустим некорректные значения он "галиматью" не начал печатать. К примеру ввели от 5 до 10 и количество копий 20, тогда на печать будет отправлена страница 1 с номером в Z1(5), потом тоже самое но с номером 6.... а вот после печати страницы с номером 10 он же может по новой "по кругу" начать печать или вообще "заклинит". В идеале конечно чтобы в таких случаях просто "пустые" (в смысле без номера) печатались страницы.
Вот  "на бумаге" просто, а как это воплотить пока не знаю

И да БМВ правильно заметил: мне нужно отпечатать много раз единственную страницу в которой будет изменяться только порядковый номер в определенной ячейке
Изменено: edkudin - 25.01.2018 02:44:05
 
Вот что у меня получилось:
"разрезал" я листы, теперь искомая ячейка стала D1,
в ячейки G3 и I3 я ставлю начальный номер и количество листов
В принципе макрос отрабатывает нормально, отправляет на печать с нужным номером, может стоит что-то поправить?
Код
Sub Печать_нумерованных_листов()
Печать_нумерованных_листов Макрос
   Dim An1 As Integer
   Dim Ak1 As Integer
    An1 = Range("G3").Value
    Ak1 = Range("I3").Value
   Range("D1") = An1
          For n = 1 To Ak1
            ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
            IgnorePrintAreas:=False
         Range("D1") = An1 + n
        Next
        Range("D1") = ""
End Sub


Вот что не получается, так это перед печатью самого первого листа выдать запрос на каком принтере печатать, а то получается что в разных местах печати разные принтеры, макрос печатает на принтере по умолчанию, а они не всегда совпадают
Изменено: edkudin - 26.01.2018 06:34:46 (исправление ошибок)
 
edkudin, если у Вас пользовательский интерфейс организован через ячейки, пусть имя принтера берется из ячейки J3
Код
Sub Печать_нумерованных_листов()
'Печать_нумерованных_листов Макрос
Dim n&, pr
  pr = Range("J3").Value 'имя принтера
  For n = Range("G3").Value To Range("G3").Value + Range("I3").Value
    Range("D1") = n
    ActiveSheet.PrintOut Copies:=1, Collate:=True, _
      IgnorePrintAreas:=False, ActivePrinter:=pr
  Next
  Range("D1") = ""
End Sub

 
Казанский спасибо, посмотрел ваш код, оказывается можно более упрощенно переменные присваивать. В вашем варианте он на один лист больше чем нужно печатал, но это лечится легко (-1 в цикле) а вот как я узнаю какое имя принтера в ячейку j3 занести? я же не знаю какой принтер на том или ином компьютере
нашел вот такое
Цитата
Предварительный просмотр страницы перед печатью
Вызовите метод PrintPreview листа.
Globals.Sheet1.PrintPreview()
Если это то-же что и при переходе по меню файл-печать, то было-бы самое то,
но как его прикрутить не знаю, просто вставляю- ошибка компиляции 1004
 
Цитата
edkudin написал:
я же не знаю какой принтер на том или ином компьютере
Я-то тем более не знаю :)
Попробуйте так - будет диалоговое окно с выбором принтера, если нажать ОК, то пойдет печать на выделенный принтер, если нажать Отмена или крестик, то выход из процедуры.
Код
Sub Печать_нумерованных_листов()
'Печать_нумерованных_листов Макрос
Dim n&
  If Not Application.Dialogs(xlDialogPrinterSetup).Show Then Exit Sub
  For n = Range("G3").Value To Range("G3").Value + Range("I3").Value - 1
    Range("D1") = n
    ActiveSheet.PrintOut Copies:=1, Collate:=True, _
      IgnorePrintAreas:=False ', ActivePrinter:=pr
  Next
  Range("D1") = ""
End Sub

Хотите как-то более красиво - изучайте https://www.google.ru/search?q=выбор+принтера+site%3Aplanetaexcel.ru
Изменено: Казанский - 26.01.2018 13:52:38
 
Огромное спасибо!!! Это то что нужно, и за ссылку тоже!
Страницы: 1
Читают тему
Наверх