Макрос excel печать на принтере

Хитрости »

14 Январь 2017              15927 просмотров


Основная задача кодов Visual Basic for Applications — автоматизация. И задачи зачастую бывают самые разные. Одна из таких задач — печать листов или ячеек по условию или в цикле. Сама по себе отправка на печать листа или диапазона не представляет сложностей, это легко можно записать макрорекордером и вставить в свой код. Выглядеть это будет примерно так:

Sub Макрос1()
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False
End Sub

Но зачастую необходимо не просто отправить на печать, а еще и на определенный принтер. При этом не просто указать другой принтер, а дать возможность выбрать принтер пользователю, не задавая его жестко в коде. Ведь у разных пользователей могут быть разные принтеры подключены. Часто такое необходимо при печати этикеток или других специфических материалов(открытки, буклеты и т.п.) потому, что для них как правило используют не стандартный офисный черно-белый лазерный принтер, а некий более продвинутый с возможностью заправки специфических листов. Как видно из кода выше — там нет и малейшего намека на указание принтера. Хотя в принципе параметр такой есть — ActivePrinter.
На самом деле есть несколько вариантов выбора принтера, но я покажу самый надежный (как оказалось) и в тоже время самый простой — через стандартный диалог выбора принтеров:

Sub ShowPrinters()
    Application.Dialogs(xlDialogPrinterSetup).Show
End Sub

Этот диалог после вызова автоматически назначает выбранный в нем принтер принтером по умолчанию для печати. Т.е. теперь чтобы мы ни отправили на печать будет отправлено на этот принтер. Все бы хорошо, но тут появляется небольшая проблема: в этом случае у нас не только из кодов будет идти печать на этот принтер, но и при обычной печати. А это нам не надо, ведь тогда даже 100500 каких-то «левых» документов вместо печати на лазерном черно-белом будут распечатаны на офигительном цветном. За такое можно и премии лишиться :) Конечно, можно каждый раз перед ручной печатью выставлять нужный принтер. Но во-первых об этом можно просто забыть, а во-вторых — как только изменим один раз, нам придется перед печатью из кода опять менять принтер. Замкнутый круг и автоматизацией вообще не пахнет.
Поэтому лучше чуть-чуть все усложнить и при каждой печати из кода VBA назначать нужный принтер. Я заготовил универсальный код, который отправляет на печать либо активный лист, либо указанный диапазон ячеек именно на выбранный для печати из VBA принтер. При желании и умении код можно доработать для печати листов и диапазонов в цикле. Но основной упор сделан на выбор принтера для печати только из кода. Т.е. при первом запуске кода печати будет предложено выбрать принтер:
Окно выбора принтера
Если принтер будет выбран и нажата кнопка Ок, то принтер будет запомнен и сразу после этого сброшен и установлен заново тот принтер, который был изначально установлен для печати. Однако при печати из кода будет использован именно выбранный принтер, а не тот, который будет применяться при ручной печати.
Т.е. при ручной печати будет один принтер, а при печати из кода — другой.

Option Explicit
'глобальная переменная для хранения значения выбранного принтера при печати из VBA
Public sNowPrinter As String
'---------------------------------------------------------------------------------------
' Procedure : ChangePrinter
' Author    : The_Prist(Щербаков Дмитрий)
' Purpose   : Функция выбора принтера для печати из кода VBA
'---------------------------------------------------------------------------------------
Sub ChangePrinter()
    sNowPrinter = "Set"
    Dim v, s
    'запоминаем текущий принтер, чтобы можно было вернуть его после выбора
    s = Application.ActivePrinter
    'показываем окно выбора принтера
    v = Application.Dialogs(xlDialogPrinterSetup).Show
    'если принтер был выбран - запоминаем выбор
    If v = True Then
        sNowPrinter = Application.ActivePrinter
    End If
    'возвращаем принтер по умолчанию, чтобы стандартная печать шла на него
    Application.ActivePrinter = s
End Sub
'---------------------------------------------------------------------------------------
' Procedure : DoPrint
' Author    : The_Prist(Щербаков Дмитрий)
' Purpose   : Функция печати указанного кол-ва копий указанного диапазона ячеек
'             rr       - ссылка на диапазон ячеек - Range("A1:B10")
'                        если не указан - на печать выводится весь активный лист
'             lCopies  - целое число, указывающее сколько копий выводить на печать
'                        если не указан - на печать выводится одна копия
'---------------------------------------------------------------------------------------
Function DoPrint(Optional rr As Range = Nothing, Optional lCopies As Long = 1)
    Dim sActPrinter As String
    'проверяем, установлен ли ранее принтер для печати
    If sNowPrinter = "" Or sNowPrinter = "Set" Then
        'если нет - вызываем процедуру выбора принтера
        Call ChangePrinter
        'если выбранный принтер не был выбран(нажали Отмена), то используем текущий
        If sNowPrinter = "Set" Then
            If MsgBox("Не выбран принтер для печати. Использовать установленный в качестве активного?", vbCritical + vbYesNo, "www.excel-vba.ru") = vbNo Then
                Exit Function
            End If
            sActPrinter = Application.ActivePrinter
        Else
            sActPrinter = sNowPrinter 'получаем выбранный в окне принтер
        End If
    End If
 
    If rr Is Nothing Then
        'печатаем активный лист на выбранном принтере
        ActiveSheet.PrintOut Copies:=lCopies, ActivePrinter:=sActPrinter
    Else
        'печатаем указанный диапазон ячеек на выбранном принтере
        rr.PrintOut Copies:=lCopies, ActivePrinter:=sActPrinter
    End If
End Function

Функция ChangePrinter показывает диалог выбора принтера и назначает выбранный принтер принтером по умолчанию, запоминает выбор и отменяет его, возвращая принтер до вызова функции.
Функция DoPrint непосредственно отправляет на печать именно на выбранный принтер. Если принтер ранее не был выбран, то сначала будет вызвана функция ChangePrinter.
При этом функция DoPrint имеет два необязательных аргумента:

  • rr — ссылка на диапазон ячеек (например Selection для вывода на печать выделенного диапазона или Range(«A1:B10») для вывода на печать конкретного диапазона, вне зависимости от того, какой выделен). Если этот аргумент не указан, то на печать выводится весь активный лист.
  • lCopies — целое число, указывающее сколько копий выводить на печать. Если аргумент не указан — на печать выводится одна копия.
  • В процедуре ниже на печать выводится выделенный диапазон с количеством печатных копий листов — 2.

    Sub TestPrint()
        DoPrint Selection, 2
    End Sub

    Так же в функции DoPrint можно заменить ActiveSheet на конкретный лист. Например: Workbooks(«Книга2.xlsx»).Sheets(«Лист3»). Книга Книга2.xlsx должна быть открыта и должна содержать лист с именем Лист3.

    В приложенном к статье файле так же есть пример печати по очереди каждой из этикеток, расположенных в два ряда:
    Этикетки на листе
    Хотя практичнее автоматически заполнять только один шаблон этикетки в цикле разными данными и его отправлять на печать.

    Скачать пример:

      Выбор принтера (74,5 KiB, 1 537 скачиваний)


    Статья помогла? Поделись ссылкой с друзьями!

      Плейлист   Видеоуроки


    Поиск по меткам

    

    Access
    apple watch
    Multex
    Power Query и Power BI
    VBA управление кодами
    Бесплатные надстройки
    Дата и время
    Записки
    ИП
    Надстройки
    Печать
    Политика Конфиденциальности
    Почта
    Программы
    Работа с приложениями
    Разработка приложений
    Росстат
    Тренинги и вебинары
    Финансовые
    Форматирование
    Функции Excel
    акции MulTEx
    ссылки
    статистика

    Макрос для слияния данных при серийной печати рассылок в Excel

    ​Смотрите также​case «qwer»: .Worksheets(s).PrintOut​ листов — все​ эту строку​ Trim$(src.Cells(i, 4)) dst.Cells(3,​Потом следующие 16​ ладно, главное чтоб​ Форма по 213н!AR13​Нужно вплотную заняться​ про With https://msdn.microsoft.com/ru-ru….%3Dtrue​: Доброго времени суток!​Olga_L​ выбирай до умопомрачения.​ принтер и печатал​Естественно можно использовать другие​ ActiveWorkbook.Worksheets(NameListDanye)​ заказа с учетом​Текстовый редактор Word обладает​ Copies:=2​ показали бы? В​Selection.PrintOut Copies:=1, Collate:=True,​ 4) = sUser​ уведомлений по г.​ сами помнили…​ и сразу печатью.​ изучением макросов, чтоб​Кстати, ThisWorkbook здесь​ Столкнулся со следующей​: Мне выдает ошибку.​С уважением, Александр.​ указанный лист. т.е​ названия листов, только​Set DiapazS =​ даты его составления.​ определенной функциональностью, которой​case «tyui»: .Worksheets(s).PrintOut​

    Подготовка слияния данных для серийной печати рассылок в Excel

    ​ Вашем конкретном случае​ IgnorePrintAreas:=False​ ‘ Заполнить Ф.И.О.​ Зиме и т.д.​В остальном должно​Ну или даже​ другим мозг не​ вообще не нужен.​ задачей:​ Run-time error 438.​Igor67​ кнопка на котром​ не забывайте соответственно​ ListSerii.Range(AdresRekvizitov)​ Допустим на строки​ нет в Excel.​ Copies:=3​ можно было вообще​taxi_driver​ dst.Cells(5, 4) =​

    1. ​ и также выводились​ работать, если код​ просто цикл от​ выносить))))​ А вот ActiveSheet​Необходим (для удобства)​ Пишет что «обьект​: С жиру не​ прописан этот макрос​ отредактировать значения в​Set DiapazD =​ реализации дается 2​
    2. ​ Например, функция слияния​case else: .Worksheets(s).PrintOut​ обойтись без файла-примера,​: разобрался, почему то​ sPodr ‘ Заполнить​ на печать.​ в нужном месте​ 3 до 468,​ЕЩЕ РАЗ СПАСИБО!!!​ нужен​ макрос печати. Но​ не поддердивает это​ бесимся, условие классное,​ на одном листе,​

    ​ строках для этих​ ListDannye.Range(AdresDannye)​ недели, тогда вводим​ документов для серийной​ Copies:=1​

    Создание Серийной Таблицы с шаблоном для рассылки

    ​ указав в вопросе:​ именно это было​ отдел. ‘ Очистить​С помощью ИНДЕКС​ и нигде раскладка​ подменяя число в​Timus​КодSub nameu8()​ не простой, а​ свойство или метод».​ все неизвестно лист​ а печатать нужно​ переменных:​For Stroki =​ простую формулу: =B3+14.​ печати адресов писем​end select​

    ​ печатать только листы,​ лишним​ табличную часть карточки​ и ПОИСКПОЗ как-то​ не перепутана. Ну​ ссылке =Бюджет!L3​: Добрый день​

    создать Серийную Таблицу.

    ​DisplayDrawingObjects = xlHide​ с выделением области​JayBhagavan​ для печати, принтер.​ другой лист.​NameListSerii = «Серии»​ 1 To DiapazD.Rows.Count​На отдельном листе создадим​ на конвертах при​Hugo​ у которых в​IgnorePrintAreas:=False​ dst.Range(dst.Cells(10, 1), dst.Cells(25,​ не получается делать​ и если кнопка​

    Подготовка Таблицы Данных с реквизитами для рассылок

    ​Например такой код​Помогите пожалуйста. Нужно​With ActiveSheet​ печати, принудительной горизонтальной​: Подсказка была, а​ предлагили в макрорекордере​Igor67​NameListDanye = «Данные»​Stolbec = 1​ Таблицу Данных, которая​

    создадим Таблицу Данных.

    ​ массовой рассылке. Задумайтесь,​: Или так -​ ячейке, например, А1​расскажите хоть почему​ 8)).ClearContents ‘ Заполнить​ выборку из двух​ та​в модуль листа:​ чтобы при нажатии​.PageSetup.Orientation = xlLandscape​ ориентации и печати​ ошибку в коде​ прописать последовательность действий​: Ну и запиши​А также:​For Each Rekvizit​ будет содержать все​ на сколько был-бы​ меньше букв:​ значение > 0.​RAN​ первую строку: m​

    ​ таблиц (одно только​Damon2013​Sub tt() Dim​ на кнопку она​.Range(«A1:O23»).PrintOut​ выделенного диапазона на​ подправить можете самостоятельно,​ — не подошло.​ макрорекодером последовательность действий​AdresDannye = «A2:D20″​ In DiapazS​ переменные значения, подставляемые​ практически применим этот​Dim n As​GIG_ant​: По той же​

    ​ = 1: dst.Cells(10,​ поле «Территория (БП)»).​: Подскажите, а как​ i& For i​ закрашивалась определенным цветом​.PageSetup.FitToPagesWide = 1​ 1 лист.​ т.к.ЦитатаOlga_L написал: Я​ Что делать дальше​ с переходом на​AdresRekvizitov = «B3,​Set Yacheyki =​ в соответственные места​ инструмент в Excel,​ Byte​: Попробуйте такую продцедуру:​ причине, по которой​ 1) = m:​

    ​Hugo121​

    Слияние данных обеих таблиц в Excel с помощью макроса

    ​ реализовать второй вариант:​ = 3 To​ и отправляла на​.PageSetup.FitToPagesTall = 1​Простой макрос печати​ не прошу решить​ ? Ставь задачу,​ заданный лист, установкой​ B4, B6, B7″​ DiapazD.Cells(Stroki, Stolbec)​

    ​ Серийной Таблицы. На​
    ​ чтобы можно было​Select Case s​
    ​Sub MyPrint()​ цыпочку в левом​
    ​ m = m​: Без примеров файлов​
    ​ выводить первые 10​ 468 With Range("AR13")​
    ​ печать определенное количество​End With​
    ​ диапазона есть:​ задачу за меня​
    ​ спрашивай что не​ области печати, выбором​
    ​В том случаи если​Stolbec = Stolbec​
    ​ следующем рисунке изображен​ печатать: счета фактур,​
    ​Case "qwer": n​Dim sh As​
    ​ верхнем углу зовут​ + 1 '​
    ​ можно только гадать​ уведомлений на печать,​
    ​ .NumberFormat = "General"​ копий заданного диапазона​
    ​DisplayDrawingObjects = xlAll​
    ​Sub Name()​
    ​Не получится -​
    ​ получилось.​
    ​ принтера и возвратом​ изменились размеры или​
    ​ + 1​
    ​ простой пример Таблицы​ отчеты, анкеты, бланки​
    ​ = 2​ Worksheet​
    ​ Игорь. (Обрезание треба)​ Компьютер или ноутбук:​
    ​ - может помогут​ потом вывод сообщения​
    ​ .Value = "=Бюджет!L"​ определенного листа.​
    ​End Sub​
    ​With ThisWorkbook​ сообщите.​
    ​dl​ на исходный лист.​
    ​ адреса диапазонов таблиц​Rekvizit.Formula = Yacheyki.Value​
    ​ Данных из серийными​
    ​ заказов, коммерческие предложения​
    ​Case "tyui": n​
    ​For Each sh​
    ​Grego​ If Trim$(src.Cells(i, 9))​
    ​ специальнонаписанные (или готовые)​ "Продолжить печать след.​
    ​ & i End​Я сделал следующим​
    ​3. Крайне нежелательно​
    Код VBA-макроса.

    ​.DisplayDrawingObjects = xlHide​Olga_L​

    1. ​: Например распечатать все​Лузер​ на этих листах​Next Rekvizit​ переменными значениям:​ и др. В​ = 3​ In ThisWorkbook.Worksheets​: Добрый День, Уважаемые​ Like «Компьютер» Then​ UDF, или вообще​ 10 уведомлений»? Если​ With DoEvents: DoEvents:​ образом, но чтото​
    2. ​ называть что-либо (макросы,​.Worksheets(1).Range(«A1:O23»).PrintOut​: Я себе не​ файлы xls в​: Да но так​ просто отредактируйте значение​ListSerii.PrintOut​При создании такой таблицы​ принципе с помощью​Case Else: n​If Not sh.[A1].Value​ Дамы и Господа!​ dst.Cells(10, 2) =​ всё делать макросом.​ ок, то начинаем​ DoEvents Me.PrintOut Copies:=1​

    ​ не работает:​ функции, объекты, переменные,​.DisplayDrawingObjects = xlAll​ так даный макрос​ директории.​ он просто сразу​ в соответственных переменных.​Next Stroki​ мы должны придерживаться​

    ​ программы Word мы​ = 1​ = 0 Then​

    1. ​Необходимо сделать макрос​ «Системный блок» ElseIf​ Это как я​ печать с 11​ DoEvents: DoEvents: DoEvents​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Private Sub CommandButton1_Click()​
    2. ​ …) именами, зарезервированными​ ‘xlPlaceholders​ представляла. В этом​Принтер и номер​ выводит на печать​Обратите внимание, что при​

    ​MsgBox («Отравлено на​ базового правила –​ можем применять инструмент​End Select​ sh.PrintOut Copies:=1​ который будет печатать​ Trim$(src.Cells(i, 9)) Like​ понял задачу.​ и по такому​ Next End SubDoEvents​If CommandButton1.BackColor =​ в Excel или​End With​

    ​ коде для меня​
    ​ печатаемой страницы выбрать​ тот лист на​

    ​ указании несмежного диапазона​ печать» & _​ каждая строка содержит​ слияния документов так,​.Worksheets(s).PrintOut Copies:=n​Next sh​ документы из конкретной​ «Ноутбук» Then dst.Cells(10,​

    ​Manqix​
    ​ принципу до конца​ для того, чтоб​

    ​ vbBlack Then​ в VBA. У​

    ​End Sub​ почти ничего не​ в коде с​ котром был выполнен​ адреса между ячейками​CStr(Stroki — 1)​ определенную группу связанных​ чтобы импортировать данные​Guest​End Sub​

    ​ папки, и конкретные​ 2) = «Ноутбук»​: Здравствуйте! Был бы​ столбца (выводить по​ пока код работает​CommandButton1.BackColor = vbGreen​

    ​ Вас макрос называется​
    ​Что нужно добавить​

    ​ понятно. Ладно.. и​

    ​ помощью диалогов.​
    ​ макрос, а мне​ мы разделяем запятыми.​

    ​ & » бланков»)​ между собой значений.​ из Excel. Но​: Sub Печать()​Проверяется значение ячейки​ листы в каждом​

    ​ Else Stop ‘​ признателен в помощи​ 10)​ можно было ещё​CommandButton1.ForeColor = vbBlack​ «name». Не нужно​ для горизонтальной ориентации​ на том спасибо.​Olga_L​ нужно чтобы можно​ Также количество ячеек​On Error GoTo​ Например, имя и​ это весьма сложное​Dim sh As​ А1 на всех​ Excel документе из​ В поле «Тип​ создания макроса. Ввиду​Hugo121​ что-то на компе​

    ​CommandButton1.Caption = «Договор»​ так делать. Назовите​ и печати выделенного​ Будем разбираться​: Здравствуйте, хочу сделать​ было еще выбрать​ в каждой строке​

    ​ 0​

    ​ фамилия одного и​ и не всегда​ Worksheet​

    ​ листах книги, если​

    ​ этой папки (документы​ техники» недопустимое значение​ того что никогда​: Не проверял печать,​ делать.​Worksheets(«Договор).Range(«A27:AC199»).PrintOut Copies:=2​

    Процесс слияния данных и серийной печати рассылок из Excel

    ​ как-нибудь иначе. Хотя​ диапазона на 1​JayBhagavan​ печать нескольких листов​ принтер и печатал​ Таблицы Данных соответствует​End Sub​ того же получателя​ удобно реализуемое решение.​For Each sh​ не равно нулю​

    ​ все типовые).​ End If dst.Cells(10,​ не сталкивался не​ но запрос работает:​Добавлено через 1 минуту​GoTo EndSub​ бы «name_»​ лист?​: Olga_L, простите, что​ одной кнопкой, оптом,​ указанный лист. т.е​

    ​ количеству поданных адресов​В коде применяются 2​ должны находиться в​ В данном примере​ In ThisWorkbook.Worksheets​ то печатаем.​Если есть у​ 3) = src.Cells(i,​ знаю как это​For i =​

    Информация о количестве.

    ​Принудительно ставить формат​End If​BlackRaven​Заранее большое человеческое​ не угодил.​ так саказать. Но​ кнопка на котром​

    Готов бланк.

    ​ ячеек для несмежного​ цикла:​ одной строке. Наш​ мы с помощью​If Not sh.[A1].Value​evgeny_t​

    exceltable.com

    Макрос печати

    ​ кого-то готовое решение,​​ 2) ‘ Конфигурация​ делать, однако выполнить​ a + 2​

    ​ ячейке вроде как​​EndSub:​: _Boroda_, про имя​

    ​ спасибо! )))​​Скрытый текст Sub jjjj()​

    ​ как сделать не​​ прописан этот макрос​ диапазона в Серийной​For Stroki = 1​ макрос будет по​ VBA-макроса создадим свой​ = 0 Then​: Прошу прощения за​ просьба поделиться! Спасибо!​ k = 11​ задачу надо…​ To b If​ не нужно, но​End Sub​ — я знаю,​P.S. с ориентацией​

    ​ var_val = Worksheets(«Лист1»).[H3].Value​​ знаю. При этом​ на одном листе,​ Таблице. Все данные​ To DiapazD.Rows.Count –​ строкам считывать эту​ альтернативный инструмент слияния​ sh.PrintOut Copies:=3​

    ​ неграмотный вопрос)​​KoGG​ For j =​Суть задания состоит​ i Mod 10​ у меня почему-то​*где Договор это​ спасибо (просто тут​ справился (вроде). Добавил​ If var_val Так​ есть условие: сколько​ а печатать нужно​ собираются и вводятся​ Первый проходить по​ таблицу и подставлять​ в Excel. И​Next sh​PS у меня​: Готового решения не​ 18 To 23​
    ​ в том, чтобы​ = 0 Then​ глюк и нужно!​
    ​ название кнопки и​ обозначил как Name.​
    ​ следующую строку ниже​

    ​ понятней?​ листов печатать -​ другой лист.{/post}{/quote}Принтер заранее​ по очереди. Например,​ всем строкам Таблицы​ взятые значения с​

    ​ продемонстрируем как использовать​​End Sub​ в книге белее​ было, а теперь​

    ​ If src.Cells(i, j)​​ из имеющейся базы​ ans = MsgBox(«Продолжить​Damon2013​ Листа в книге​ При запуске Вашего​ .DisplayDrawingObjects = xlHide:​Михаил Лебедев​ зависит от значения​ известен или его​ в ячейку Серии!B3​ Данных. Количество проходов​ диапазона каждой строки​ его для серийной​Как вот изменить​
    ​ 100 листов..​

    ​ есть:​​ <> Empty Then​ в Excel’e, которая​ печать след. 10​: Подскажите, пожалуйста, почему​vikttur​ макроса — да,​

    ​Код.ActiveSheet.PageSetup.Orientation = xlLandscape​​: Если яч. H3=3,​ в конкретной ячейке.​ надо выбирать перед​ по очереди будут​ зависит от значения​ в соответственные места​

    ​ печати документов при​​ данный макрос? печать​Юрий М​
    ​Sub Печать_заданных_листов_файлов_Excel_из_папки() Dim​ dst.Cells(k, 2) =​ располагается на 3-х​ уведомлений?», vbYesNo) If​ выдает ошибку?​:​

    ​ печатает выделенный фрагмент,​​Pelena​ то надо будет​ Подскажите пожалуйста как​ печатью? Равно как​ заполняться все значения​ в переменной Stroki.​ Серийной Таблицы. Так​ подготовке их к​

    ​ последний страницы 1​​: Про главное опять​ MyPath$, MyFileName$, ShName,​
    ​ src.Cells(i, j) k​ листах:​ ans = 7​
    ​—————————​Worksheets(«Договор)​ но на 4-х​

    ​: Для Макрорекодер записал​​ напечатать листы с​ в VB это​ и лист?​ из столбца Данные!A:A,​
    ​ А ее значение​ будет реализована многоразовая​ массовой рассылке по​ копии.я не силен​ умолчали… Смотрите вариант​
    ​ i% MyPath =​ = k +​а)​
    ​ Then Exit Sub​

    ​Microsoft Visual Basic​​- нет закрывающих​ листах. А у​ActiveSheet.PageSetup.FitToPagesWide = 1​ 1_4 по 17_20,​ реализовать. Знание VB​Если да, то​ а в ячейку​ получено путем определения​ печать одного и​ адресам клиентов получателей.​ и не могу​

    ​ от GIG_ant’а​​ «C:Temp3» ‘ Папка,​ 1 End If​1-ый лист база пк​
    ​ With Range(«AR13») .NumberFormat​—————————​ кавычек​ меня задача впихнуть​

    planetaexcel.ru

    Макрос печати нескольких листов сразу

    ​ActiveSheet.PageSetup.FitToPagesTall = 1​​ т.е. ВСЕ листы?​ на уровне «записать»​ совет Igor67 Вам​ Серии!B3 – попадут​ количества заполненных строк​ того же шаблона​Чтобы использовать в Excel​ сам разобраться.​evgeny_t​ из которой печатаем​ Next ‘ Блок​ или ноутбуков, вместе​ = «General» .Value​Compile error:​Строки лишние:​ невпихуемое (эти 4​BlackRaven​

    ​Ведь 3 <​​ или «копировать -​
    ​ в руки​ значения из столбца​ в Таблице Данных.​ с разными реквизитами.​ преимущества серийной печати​Guest​: Большое спасибо!!! Только​ ShName = Array(«Лист1»,​ питания If src.Cells(i,​
    ​ их характеристиками, инв.​ = «=Бюджет!L» &​​Invalid use of​GoTo EndSub, EndSub:​ листа на 1).​: Pelena, СПАСИБО огромное!​ 20 ?​ вставить». Потому и​
    ​Если нет, то​ Данные!B:B и т.д.​ Адрес этой таблицы​
    ​Так же следует помнить​ и слияния данных,​: Пардон!​

    ​ что попробовал, всё​​ «Лист2») ‘ Набор​ 24) <> Empty​ номерами, и прочими​ i End With​ Me keyword​(при необходимости лучше​ Иными словами действия:​ Вроде все работает.​Я хочу сказать,​ не получаеться ничего.​ вызывайте окно печати​На этапе тестирования макроса​ находится в переменной​ о том, то​ в первую очередь​Ребят , что​ работает!! Но есть​ имен листов к​ Then dst.Cells(k, 2)​ данными;​ DoEvents: DoEvents: DoEvents​—————————​

    ​Exit Sub​​ «Выделить диапазон-настройка печати-альбомная​Итого получилось так:​ что по Вашим​ikki​Application.Dialogs(xlDialogPrint).Show​ нет необходимости рисковать​

    ​ DiapazDannye.​​ Таблица Данных должна​ необходимо создать таблицу​ нужно добавить во​ нюанс, который хотелось​ распечатке MyFileName =​ = «Бл. питания​б)​ ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1,​Ругается на Me.PrintOut​)​ ориентация-напечатать выделенный фрагмент-вписать​Sub name()​ условиям, всегда надо​: нет, не поэтому.​Можно сразу некоторые​ ошибочной печатью документов​For Each Rekvizit In​ быть полностью заполнена.​ с определенной структурой​ второй макрос, чтобы​ бы учесть…​ Dir(MyPath & «*.xls*»)​ » & src.Cells(i,​2-ой лист база доп​

    ​ Copies:=1 DoEvents: DoEvents:​​ Copies:=1​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Private Sub CommandButton1_Click()​ лист на 1​With ThisWorkbook​ печатать все листы.​

    ​скорее — потому,​​ аргументы подставить, подробнее​ и тратит офисные​ DiapazS – Второй​ Если будет пустая​ и контролем ввода​ листы , которые​;)​Дело в том,​ On Error Resume​

    ​ 28) & «​​ оборудования, таких как​ DoEvents End If​Hugo121​With CommandButton1​ страницу» должны проводиться​DisplayDrawingObjects = xlHide​JayBhagavan​ что над предыдущими​

    ​ о них в​​ листы бумаги. Достаточно​ цикл находиться внутри​:)​ ячейка, тогда будет​ в нее значений​ не соответствуют даному​ что при выполнении​

    ​ Next ‘ Если​​ Вт» k =​ принтеры и мфу,​ Next​: — это читали?​If .BackColor =​
    ​ в автоматическом режиме…​ActiveSheet.PageSetup.Orientation = xlLandscape​
    ​: Михаил Лебедев, срабатывает​ полученными готовыми решениями​ F1 по ключевым​ лишь поменять строку​

    ​ первого. Он отвечает​​ опущено значение. А​ при заполнении. А​ условию(в нашем случае,​

    ​ макроса на печать​​ в файле нет​ k + 1​ ксероксы и мониторы,​Даже можно чуть​Специально болдом выделил…​ vbBlack Then​sboy​Worksheets(6).Range(«A1:O23»).PrintOut​

    ​ приоритетное правило. Как​​ Ваших задач Вы​ словам Built-In Dialog​ кода:​ за поочередное заполнение​ если будет пустая​ после подготовки материалов,​ если ячейка=0), выводились​ отправляется каждый лист​ заданного листа, то​ End If ‘​ а также ИБП​ короче, без переменной​ Нужно было красным​.BackColor = vbGreen​:​ActiveSheet.PageSetup.FitToPagesWide = 1​ понял, правила взаимоисключающие.​ не думали, и​ Box Argument Lists​ListSerii.PrintOut​ соответственных ячеек на​ целая строка, тогда​ мы с помощью​ бы в окно​ по отдельности, у​ игнорируем и продолжаем​ Сетефой фильтр If​

    ​ (и каждого оборудования​​If MsgBox(«Продолжить печать​
    ​ болдом и 20м​.ForeColor = vbBlack​Цитата​ActiveSheet.PageSetup.FitToPagesTall = 1​Михаил Лебедев​
    ​ учиться у Вас​Route​на временную строку которая​ листе где находится​ будет прервана серия​ средств VBA напишем​ сообщений. Типа листы​ меня лазерный принтер​ работать Do Until​ Trim$(src.Cells(i, 27)) Like​ может быть свой​
    ​ след. 10 уведомлений?»,​

    ​ кеглем​​.Caption = «Договор»​
    ​sboy, 29.05.2018 в​DisplayDrawingObjects = xlAll​
    ​: , я вот​ либо времени нет,​: Какой принтера не​ включит режим предварительного​ Серийная Таблица. А​ печати. Положение Таблицы​

    ​ свой макрос, который​​ такие то (перечень),​ и каждый лист​
    ​ MyFileName = «»​ «да» Then dst.Cells(k,​

    ​ инвентарный номер, так​

    planetaexcel.ru

    Макрос печати (Макросы/Sub)

    ​ vbYesNo) = 7​​Damon2013​Worksheets(«Договор»).Range(«A27:AC199»).PrintOut Copies:=2​ 09:14, в сообщении​
    ​ ‘xlPlaceholders​ об этом и​ либо, что скорее,​ известен, имя печатаемой​ просмотра:​ данные берет со​ Данных не обязательно​ будет выполнять серийную​
    ​ не соответствуют затребованому​ он печатает как​

    ​ If Left$(MyFileName, 2)​
    ​ 1) = m​
    ​ и у всей​
    ​ Then Exit Sub​
    ​: Спасибо большое!!!​End If​
    ​ № 4 ()​
    ​End With​

    ​ хочу сказать. Ну,​ желания.​ странице известно.​ListSerii.PrintPreview​ строк Таблицы Данных.​
    ​ должно начинаться с​ печать документов. Данные​
    ​ условию или условиям,и​ новый документ, то​ <> «~$» Then​ m = m​
    ​ оргтехники принадлежащей одному​

    ​Damon2013​​А скажите, пожалуйста,​
    ​End With​
    ​ Вы печатаете, а​

    ​End Sub​​ что я, например,​Знание VB на уровне​
    ​Igor67​
    ​В таком режиме макрос​
    ​ Количество циклов определяется​
    ​ ячейки A1. Ее​
    ​ на основе которых​
    ​ не выводятся на​
    ​ есть очень много​
    ​ ' Исключаем временные​
    ​ + 1 dst.Cells(k,​ человеку может быть​
    ​: А если сделать​
    ​ как можно настроить​

    ​End Sub​ потом устанавливаете размеры​Данный макрос на​ не так понял.​ «записать»​: Если принтер не​ Excel не будет​
    ​ значением переменной Yacheyki.​ адрес расположения укажем​ будет реализована печать​ печать.​ времени тратится..​ файлы Excel Workbooks.Open​ 2) = «Сетевой​

    ​ один инвентарный номер.​​ без инпутбокса? Выводить​ печать, чтобы выводилось​
    ​После печати ведь​BlackRaven​
    ​ определенном листе выделяет​
    ​ Задача, на мой​
    ​приводит к примерно​
    ​ известен, давите на​
    ​ направлять данные на​
    ​ А ее значение​
    ​ в VBA-коде макроса.​
    ​ тиража, должны быть​
    ​И еще ,​Обычно я выделяю​
    ​ FileName:=MyPath & MyFileName,​

    ​ фильтр» k =​​ У 2-x одинаковых​ первые 10 уведомлений​ по 10 уведомлений?​ нужно обратно перекрасить?​: sboy, да, читал​ необходимый диапазон и​ взгляд, поставлена не​ такому результату: Sub​ значок печати и​ принтер, а просто​
    ​ получено путем определения​​Также важно учитывать тот​​ разделены на 2​ как в этот​ нужные листы вручную​ UpdateLinks:=0, ReadOnly:=True For​ k + 1​ видов техники не​ на печать, потом​Т.к. их объем​Damon2013​ Ваше замечание по​ выводит его на​ совсем корректно ☺​ Макрос1() Sheets(Array(«1-4», «5-8»,​
    ​ будет печатать на​
    ​ выведет документ на​
    ​ количества ячеек в​ факт, что листы​ части:​ же макрос добавлять​ (их в книге​ i = 0​ End If ‘​ может быть одного​ сообщение, если ок,​ большой (порядка 466),​: Здравствуйте!​
    ​ этому поводу. Но​ печать в альбомной​Михаил Лебедев​ «9-12»)).Select Sheets(«1-4»).Activate ActiveWindow.SelectedSheets.PrintOut​
    ​ принтере установленном по​
    ​ предварительный просмотр печати.​
    ​ исходной строке.​
    ​ обеих таблиц должны​
    ​Таблица с постоянными (не​
    ​ допусловия для проверки.​
    ​ больше 100) и​
    ​ To UBound(ShName) ActiveWorkbook.Sheets(ShName(i)).PrintOut​
    ​ Комплект (мышь, клавиатура)​
    ​ инвентарника, прим. 2​
    ​ то продолжаем с​ то для проверки​Очень прошу помощи​ Ваш код также​ ориентации на одном​: Если логика от​ Copies:=1, Collate:=True, IgnorePrintAreas:=False​ умолчанию, а чтобы​Когда уже создадите и​Когда макрос Excel пройдет​ находиться в одной​

    ​ изменяющимися) значениями для​​ например , больше​ отправляю на печать​ Next i ActiveWorkbook.Close​ If src.Cells(i, 28)​ принтера с одним​ 11 по счету​ удобнее вывести первые​ в написании макроса,​ печатает на 4-х​ листе.​ именно такая, как​ End Sub​ страница не поплыла​ заполните все таблицы​ по всем циклам,​ рабочей книге Excel.​ информации, которая будет​ чем одна ,​

    ​ командой «файл -​​ 0 End If​​ <> Empty Then​​ инвентарным номером)​ и опять 10​ 10, потом через​ т.к. новичок. Есть​ листах)))​

    ​А с точки​​ понял , тогда​от него рукой​ при различии в​ необходимыми значениями, можно​ тогда можно вызвать​ Для функционирования кода​

    ​ выполнять роль шаблона​​ ко-во проверяемых ячеек​ печать», в таком​ MyFileName = Dir​ dst.Cells(k, 1) =​в)​ и т.д. до​

    ​ определенный интервал или​​ форма (лист «Форма​_Boroda_​ зрения правильности и​ вот такой еще​ подать до рабочего​ драйверах, в Параметрах​ запустить свой макрос​ окно сообщения (MsgBox)​ макроса не важно​ при многоразовой печати.​

    ​ и , плюс​​ случае принтер печатает​ Loop End Sub​

    ​ m m =​​3-й лист это собственно​ конца​ по действию, выводить​ по 213н»), которую​: Да, конечно, еще​ т.д. и т.п.​
    ​ вариант (правда, в​​ макроса.​ страницы установите -​ для серийной печати.​ о количестве напечатанных​ будут ли в​ Например: суть предложения,​ количество печатаемых столбцов​​ листы без остановки.​​Grego​

    ​ m + 1​​ сама карточка сотрудника.​For i =​ следующие 10 уведомлений​ необходимо заполнить данными​ нужно поменять местами.​ он правильно прописан,​ отличие от вар.​
    ​но в Вашем​ Разместить не более​

    ​ Нажимаете комбинацию клавиш​
    ​ документов. То есть​
    ​ этой книге находиться​
    ​ бланк заказа, отчет,​
    ​ таблицы (если не​
    ​Так вот, корректный​
    ​:​
    ​ dst.Cells(k, 2) =​
    ​была возможность распечатывать​
    ​ 3 To 468​ и так до​
    ​ из таблицы (лист​

    ​ К сожалению проверить​ или кой чего​ от с elseif,​ файле даже таких​
    ​ 1 стр в​

    excelworld.ru

    Макрос для печати (При нажатии определенных кнопок печать разных листов)

    ​ (ALT+F8) из списка​​ сколько было выполнено​
    ​ другие листы. Так​ реквизиты фактур Вашей​ подлежащие печати столбцы​ вопрос будет наверное​KoGG​ src.Cells(i, 28) k​ карточки определенных людей,​ If i Mod​
    ​ конца.​ «Бюджет»).​ наглядно сейчас не​
    ​ мне на руки​
    ​ мой печатает листы​ попыток нет.​
    ​ ширину и 1​
    ​ в появившемся окне​
    ​ непрерывных циклов в​
    ​ же на данном​
    ​ фирмы и т.п.​
    ​ не скрыты, то​
    ​ таков: как написать​
    ​, Спасибо! Всё работает!​

    ​ = k +​ т.е. выбрав определенного​ 10 = 0​

    ​ActiveWindow.SelectedSheets.PrintOut From:=1, To:=10,​​Заполнить на форме​​ могу, поэтому только​​ нужно сделать?​ в обратном порядке​
    ​Olga_L​​ в высоту.​​ выбираем имя макроса​​ процессе выполнения кода.​​ этапе для макроса​
    ​ В данном примере​
    ​ также выпадает сообщение​
    ​ макрос, чтобы выделить​ Очень благодарен!​
    ​ 1 End If​
    ​ человека, затем при​
    ​ Then ans =​
    ​ Copies:=1​
    ​ нужно: Финансовый орган​
    ​ теоретически всё​
    ​sboy​

    ​ ☺): Sub procPrint()​: Уважаеммый Ikki, возможно​

    excelworld.ru

    Макрос в Excel для последовательного заполнения данными и вывод их на печать

    ​Может так поможет.​​ «PechatSerii» и нажимаем​
    ​В макросе используются еще​ не играют особой​ эта таблица будет​ в окне. Критерий​ листы с условием,​mark013​ ‘ Доп. оборудование​ нажатии на «волшебную»​
    ​ MsgBox(«Продолжить печать след.​Hugo121​ — соответсвует ФО_Адм​BlackRaven​
    ​: Вы печатаете, а​ var_val = Worksheets(«Лист1»).[H3].Value​ для Вас и​Route​ на кнопку «Выполнить».​
    ​ 2 переменные с​ роли названия листов.​ называться «Серийная Таблица».​ для определения непечатаемых​ что если ячейка​:​ l = 3​ кнопку происходила печать​
    ​ 10 уведомлений?», vbYesNo)​: Ну например где-то​ МО в таблице.​: _Boroda_, дак проверить​ потом устанавливаете размеры​ Select Case var_val​ «рукой подать», а​: Да просто хотелось​Циклы инструкций кода сразу​
    ​ адресами диапазонов ячеек:​ После переименования названий​Таблица в которой все​ столбцов, например в​ E46 отлична от​KoGG​ Do While dop.Cells(l,​ карточки с оборудованием​ If ans =​ в свободные ячейки​Наименование бюджета -​ не вопрос (сам​Примерно так надо​ Case Is >​ для меня привязать​
    ​ бы чтобы можно​ проходят по всем​

    ​DiapazS – содержит адрес​​ листов, просто следует​
    ​ значения уникальны и​
    ​ строке нумерации столбцов,​
    ​ нуля, то лист​, подскажите.​
    ​ 3) <> Empty​
    ​ приписанному этому сотруднику.​
    ​ 7 Then Exit​ пишите цветом фона​ название бюджет, ОКТМО,​ сразу проверяю), вот​ поправить​ 16: Sheets(«17-20»).PrintOut Copies:=1,​
    ​ записанный макрос «быстрой​ было выбирать на​ строкам Таблицы Данных​ на несмежный диапазон​ указать их имена​
    ​ подаются для заполнения​​ стоит русская буква​
    ​ выделяется, если нет​Как в Вашем​ If Trim$(dop.Cells(l, 3))​Так же как​ Sub With Range(«AR13″)​ два числа, в​ по сводному реестру.​ только я еще​Sub name()​ Collate:=True, IgnorePrintAreas:=False Case​ печати» к условию​ каком печатать. у​ и поочередно вводят​ ячеек для Серийной​ в коде макроса.​ реквизитов при многоразовой​
    ​ х.​
    ​ — то нет..​ коде печатать «Лист​ Like sUser Then​ и в примере​ .NumberFormat = «General»​

    ​ коде ссылаетесь на​​ Остальные данные заполнять​ пытаюсь понять суть​
    ​ThisWorkbook.DisplayDrawingObjects = xlHide​
    ​ Is > 12:​
    ​ пока целая проблема,​
    ​ нас их аж​
    ​ собранные значения из​ Таблицы, в которую​
    ​​
    ​ печати. Эти значения​Благодарю за ответ!​

    ​Еще раз огромное​​ 2″ дважды?​
    ​ If Trim$(dop.Cells(l, 4))​ на фото, в​ .Value = «=Бюджет!L»​ них:​

    ​ не нужно.​​ написания макросов и​
    ​With ActiveSheet.PageSetup​ Sheets(«13-16»).PrintOut Copies:=1, Collate:=True,​ на решение которой​ 4 штуки…​
    ​ ячеек строк в​ будут вводиться переменные​Заполнение серийной таблицы значениями,​ будут вставлены в​Guest​ спасибо!!​Hugo121​ Like sPodr Then​ 1-м «№ п/п»​ & i End​
    ​For i =​С помощью функции​

    ​ учусь на пробах​​.FitToPagesWide = 1​ IgnorePrintAreas:=False Case Is​ было потрачено целое​Route​ соответственные ячейки Серийной​ значения.​
    ​ собранными в Таблице​ соответственные места Серийной​
    ​: (:​evgeny_t​: Пока​ dst.Cells(k, 1) =​ должно писаться ноутбук​ With DoEvents: DoEvents:​ [A1] To [B1]​ ВПР заполнила наименование​ и ошибках. Что​.FitToPagesTall = 1​
    ​ > 8: Sheets(«9-12»).PrintOut​ утро. Поверьте, могла​: Впринцепи операция Application.Dialogs(xlDialogPrint).Show​

    ​ Таблицы. После заполнения​​DiapazD – содержит адрес​ Данных выполнить за​
    ​ Таблицы. Например: адреса​Hugo​: прошу прощения)) E46​KoGG​ m m =​ это или компьютер,​ DoEvents ActiveWindow.SelectedSheets.PrintOut From:=1,​Это так чтоб​ финансового органа. С​ с чем поменять​.Orientation = xlLandscape​ Copies:=1, Collate:=True, IgnorePrintAreas:=False​ бы решить сама,​ открывает окно принтеров,​ каждого комплекта данных​ на смежный диапазон​ нас программа VBA-макроса.​ клиентов, имена и​: До «ещё»:​ ))​где-то отдыхает -​ m + 1​

    ​ далее перечисляется комплектующие​​ To:=1, Copies:=1 DoEvents:​ попроще, а если​
    ​ помощью функций ИНДЕКС​ местами подскажете?​End With​ Case Is >​ не стала бы​
    ​ но как сделать,​ выполняется печать готового​ ячеек для Таблицы​ Для этого откройте​ фамилии получателей и​Sub Печать()​GIG_ant​

    ​ самое простое записать​​ dst.Cells(k, 2) =​ компьютера(у ноутбука не​ DoEvents: DoEvents End​ хочется всё усложнить​ и ПОИСКПОЗ заполнила​sboy​Range(«A1:O23»).PrintOut​ 4: Sheets(«5-8»).PrintOut Copies:=1,​ обращаться на форум.​ чтобы печатся указанный​ текущего документа.​ Данных из которой​ редактор Visual Basic​

    ​ т.д. В данном​​Dim sh As​: Вот такой вариант:​
    ​ имя этого листа​ dop.Cells(l, 5) &​ пишется мощность БП);​ If Nextи ещё​ — можно конечно​ наименование бюджета, ОКТМО​: проверил, сжимает до​ThisWorkbook.DisplayDrawingObjects = xlAll​ Collate:=True, IgnorePrintAreas:=False Case​ А попыток в​ определенный лист не​Данный процесс повторяется ровно​ будут браться переменные​ (ALT+F11) и создайте​ примере вторая таблица​ Worksheet​Sub MyPrint()​ в массив дважды.​ » » &​
    ​Далее перечисляется техника​ подскажите, мы один​
    ​ цикл по 10​ и по сводному​ 1 листа нормально​ ‘xlPlaceholders​

    ​ Is > 0:​​ моем файле Вы​ разберусь никак…​ столько раз сколько​ значения для заполнения.​ модуль: «Insert»-«Module», чтобы​ будет навиваться «Таблица​For Each sh​Dim sh As​P.S. А может​ dop.Cells(l, 6) dst.Cells(k,​
    ​ с их инвентарными​ End If ставим?​ с месиджбоксом «продолжать/отменить»​ реестру.​_Boroda_​End Sub​ Sheets(«1-4»).PrintOut Copies:=1, Collate:=True,​ не увидели, потому​Лузер​ строк содержит Таблица​Чтобы более-менее было удобно​ в него записать​ Данных».​ In ThisWorkbook.Worksheets​ Worksheet, s​ он вообще на​ 3) = dop.Cells(l,​ номерами.​Hugo121​ приладить, и с​

    ​В таблице Бюджет​​: Мне не нужно,​
    ​_Boroda_​ IgnorePrintAreas:=False End Select​ как, я не​: Для тех кто​

    ​ Данных. После завершения​​ приспособить функционирование макроса​ этот код макроса:​Естественно правильно выполнять слияние​If Not sh.[A1].Value​With ThisWorkbook​ морях — давненько​ 2) k =​
    ​п.с. Также при​: Да.​ начальным инпутбоксом с​ 466 финансовых органа​
    ​ чтобы Вы проверяли.​: 1. В одной​ End Sub​ была уверена в​ ф танке повтроряю:​
    ​ действия макроса выводиться​ к изменениям таблиц​Sub PechatSerii()​ данных из этих​ = 0 Then​
    ​For Each sh​ не показывался, завидую​ k + 1​ выборе человека, на​Только тут будет​ запросом от куда​ (Накименование колонки «ФО_Адм​ Мне нужно, чтобы​ строке у Вас​Imelman​
    ​ том, что в​Можно сразу некоторые​ сообщение с информацией​ на листах, адреса​On Error Resume​
    ​ двух таблиц будет​sh.PrintOut Copies:=3​ In .Worksheets​mark013​ End If End​ первой строчке карточки​

    ​ сперва первых 7.​​ и сколько печатать.​ МО»). Подскажите, пожалуйста,​ я проверял перед​ работа с шестым​: Всем хороших выходных​ даном случае нужно​ аргументы подставить, подробнее​ о завершении генерации​

    CyberForum.ru

    Макрос печати карточек из базы Excel

    ​ на диапазоны ячеек​​ Next​ реализовано с помощью​Else​If Not sh.[E46].Value​:​ If l =​ пишется его ФИО,​ Но можно проверять​
    ​Но это от​ как последовательно заполнять​ тем, как сюда​ листом, а в​Есть вопрос, по​ начинать с записи​
    ​ о них в​​ документов и о​ подаются в текстовых​Dim ListSerii As​ определенного макроса VBA.​s = s​
    ​ = 0 Then​​Hugo121​ l + 1​ и на 2й​ i — 3​ меня если только​ форму по следующим​ код выложить.​ строках ниже и​ этой теме, задам​ «быстрой печати».​ F1 по ключевым​ их количестве отправленных​ переменных AdresRekvizitov и​ Worksheet​Подготовка данных к серийной​ & sh.Name &​ s = s​, Спасибо огромное!​
    ​ Loop ‘ Показ​​ строчке пишется служба​Damon2013​
    ​ вечером…​ бюджетополучателям и выводить​Цитата​ выше — с​ сюда же пожалуй​Olga_L​ словам Built-In Dialog​ на печать:​
    ​ AdresDannye. Благодаря функции​Dim ListDannye As​ печати можно начать​ vbNewLine​ & sh.Name &​pashulka​ листа, запрос печати​ в которой он​: Подскажите, пожалуйста, если​
    ​Damon2013​ их сразу на​BlackRaven, 29.05.2018 в​
    ​ активным. Если активен​ чтоб темы не​: Я не прошу​ Box Argument Lists​После завершения действия макроса​ Range значения этих​ Worksheet​ из создания любой​

    ​End If​​ «,»​:​ dst.Activate If MsgBox(«Напечатать​ работает.​ у меня появилась​: Посмотрите, пож-та, что​
    ​ печать?​ 11:16, в сообщении​ шестой лист, то​ плодить.​ решить задачу за​Route​ Серийная Таблица будет​ переменных из типа​Dim DiapazS As​ таблицы. Но мы​Next sh​Next sh​mark013​ карточку?», vbOKCancel, «Печать​mc-black​ вторая таблица «Ассигнования»,​ получилось:​Т.е. сейчас на​ № 10 ()​ все нормально. А​Есть два листа​ меня. Прошу, чтобы​: Я наверное действительно​ содержать данные полученные​ строки (As String)​ Range​ рекомендуем сначала создать​MsgBox «Типа листы»​s = Split(Left(s,​, Ещё один вариант​ карточки») = vbOK​: Формат карточки я​ данные из которой​Sub Кнопка16_Щелчок() Dim​ форме заполнены данные​ Что с чем​ если нет?​ эксель, как их​ подсказали хотя бы​ в танке. Найти​ из последней строки​ преобразуются в тип​Dim DiapazD As​ Серийную Таблицу. Ведь​ & vbNewLine &​ Len(s) — 1),​ печати второго листа​ Then dst.PrintOut End​ немного изменил, так​ также нужно подтянуть​ i& Dim a​ по КФ г.Братска.​ поменять местами подскажете?Это​2. Если написано​ вывести на печать​ каким образом ее​ та я нашел​ Таблицы Данных. Как​ адреса (As Range):​ Range​ она будет содержать​ s & «не​ «,»)​ — дважды​ If Set src​ что используйте третий​ на форму из​ As Long Dim​ Далее нужно заполнить​ я про то,​With ThisWorkbook​ одной отправкой? (Необходимо​ решить.​ список диалогов, а​ показано ниже на​Set DiapazS = ListSerii.Range(AdresRekvizitov)​Dim Stroki As​ больше информации, так​ соответствуют затребованому условию​.Worksheets(s).PrintOut Copies:=1​ActiveWorkbook.Sheets(ShName(i)).PrintOut Copies:=i +​ = Nothing Set​ лист из моей​ таблица 1.rar.​ b As Long​ данные по след.​ про что Сергей​, то это​ чтоб принтер подхватил​JayBhagavan​ как задать имя​ рисунке:​Set DiapazD =​ Long​ как представляет собой​ или условиям,и не​End With​ 1 ‘Sheets(ShName(i)).PrintOut ,​ dop = Nothing​ книги. Можете проверять​На форме есть​ a = Val(InputBox(«Укажите​ ФО: Управление по​sboy​ значит, что мы​ и напечатал двухстороннюю)​: Olga_L, проверяйте.Скрытый текст​ листа нужного не​Таким образом у нас​ ListDannye.Range(AdresDannye)​Dim Stolbec As​ форму шаблона с​ выводятся на печать.»​End Sub​ , i +​ Set dst =​ в работе​ блок «Сумма межбюджетного​ диапазон печати с​ финансам и налогам​писал​

    ​ работаем с той​​ Sheets(«2»).Range(«A1:I70»).PrintOut Copies:=1, Collate:=True​​ Sub jjj() shs​​ врублюсь. Приведите пример​
    ​ получилось автоматизировать большой​Такой подход к построению​ Long​
    ​ видом, наиболее приближенным​

    CyberForum.ru

    макрос печати

    ​End Sub​​evgeny_t​
    ​ 1​​ Nothing End Sub​Option Explicit Sub​
    ​ трансферта, имеющего целевое​ …»)) b =​ администрации ЗГМО, потом​BlackRaven​
    ​ книгой, где находится​ Sheets(«3»).Range(«A1:I70»).PrintOut Copies:=1, Collate:=TrueМожет​ = Array(«1-4», «5-8»,​
    ​ пожалуйста.​ объем роботы с​
    ​ макроса имеет определенные​Dim Yacheyki As​

    ​ к финальному результату.​​Guest​: То что доктор​evgeny_t​
    ​Manqix​
    ​ test() If ActiveSheet.Name​biggrin

    ​ назначение/сумма изменения»​​ Val(InputBox(«Укажите диапазон печати​ по ДФ КБПиФ​: sboy, _Boroda_, Спасибо​ макрос. With что-то​ как-то по умному​lol lol

    excelworld.ru

    Макрос для печати файлов xls из конкретной папки

    ​ «9-12», «13-16», «17-20»)​​Лузер​ помощью макроса и​
    ​ преимущества. Можно свободно​ Range​ Просто потом его​: Да , как​ прописал!!!​: Имеется книга excel​:​ = «ПК» Then​
    ​2018 год нужно​ по …»)) For​ г. Иркутска и​

    ​ вам огромное. У​​ подразумевает, что внутри​ Range (через запятую)​ var_val = Worksheets(«Лист1»).[H3].Value​
    ​: sheets(«Лист1»).Select — сначала​ без использования программы​ редактировать и изменять​Dim Rekvizit As​ нужно заполнить переменными​ говорят в народе​Огромное спасибо!!!!!!!!!!​ с большим количеством​mc-black​ PrintCard ActiveCell.Row End​ заполнить данными из​ i = a​ так до конца.​ меня действительно не​ блока With -​ написать?​ i_f = LBound(shs)​ выделяем нужный лист​ Word.​ адреса диапазонов для​ Range​ значениями из Таблицы​ , беда одна​Куда выслать бутылку​ листов (накладные для​, огромное спасибо!​ Sub Private Sub​ таблицы «Ассигнования» 2018,​ + 2 To​

    ​ Т.е. будут выведены​​ вкидывало в 1​​ End With мы​​Возможно ли вообще?​ i_n = UBound(shs)​

    ​Application.Dialogs(xlDialogPrint).Show — показываем​​Route​​ обеих таблиц при​​Dim NameListSerii As​
    ​ Данных с помощью​ не ходит. Ко​ коньяку!!!)))))​

    ​ магазинов), как написать​​Завтра съезжу распечатаю​​ PrintCard(i As Long)​​ и т.д. 2019,​ b With Range(«AR13»)​ на печать 466​ страницу. После добавления​
    ​ будем обращаться к​Hugo​ i_n = WorksheetFunction.Min(var_val​ диалог, выбираем принтер​

    ​: Подскажите макрос, чтобы​​ их изменении размера​​ String​​ макроса.​

    ​ всем негараздам с​​akm1965​​ макрос для отправки​​ гляну как выглядит,​ Dim src As​ 2020.​
    ​ .NumberFormat = «General»​ форм по разным​ «ZOOM» все стало​ этому что-то, но​

    CyberForum.ru

    Макрос для отправки на печать листов с определенным условием

    ​: Можно так:​​ 4 +​ и печатаем​ распечатать указанный лист.​ или структуры:​Dim NameListDanye As​Сначала создадим лист для​ моей стороны ,​: Есть одна проблема​ на печать листов,​ лист.​ Worksheet, dop As​
    ​Т.е. будет формироваться​

    ​ .Value = «==Бюджет!L»​​ финансовым органам.​ как нужно!​ писать его не​
    ​Sheets(Array(«2», «3»)).PrintOut Copies:=1,​ IIf((var_val Mod 4)​А разбиратся в​ Заранее спасибо​AdresDannye = «A2:D20″​ String​ серийной печати. Самая​ добавилось тайное исчезновение​ — помогите пожалуйста.​ у которых значение​Вы гений​ Worksheet, dst As​ уже столько уведомлений,​ & i End​

    ​Заранее спасибо за​​Итого вот какую​
    ​ будем. Запись примерно​
    ​ Collate:=True​ > 0, 1,​
    ​ параметрах Built-In Dialog​Guest​
    ​AdresRekvizitov = «B3,​Dim AdresDannye As​ упрощенная версия документа,​
    ​ постов. Ну да​
    ​Нужно распечать с​

    ​ определённой ячейки отлично​taxi_driver​ Worksheet Dim j​ сколько сумм ассигнований,​ With DoEvents: DoEvents:​

    ​ помощь​​ версию я оставил:​ такая​
    ​Но тогда вероятно​ 0), i_n -​ мне лень​

    ​: ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1,​​ B4, B6, B7″​ String​ подготовленного к заполнению​

    ​ ладно.​​ книги определенные листы.​ от нуля, если​: добрый всем вечер​ As Long, k​ т.е порядка 1​

    ​ DoEvents ActiveWindow.SelectedSheets.PrintOut From:=1,​Hugo121​Sub УПВПНР()​КодWith ThisWorkbook​ диапазоны печати на​ i_f + 1)​Sh_Alex​ Copies:=1​Макрос будет работать без​Dim AdresRekvizitov As​ переменными данными перед​
    ​Прикрепляю новый файли​ Это получается. А​ равно нулю, то​постановка задачи​ As Long, l​ 714.​ To:=1, Copies:=1 DoEvents:​: — зачем?​ThisWorkbook.DisplayDrawingObjects = xlHide​
    ​.DisplayDrawingObjects = xlHide​ листе нужно задать​ s_tmp = «»​: Вопрос: А не​Guest​ проблем.​ String​ серийной печатью, изображена​ прошу срочной помощи.​ вот как записать​
    ​ лист не печатается.​не вдаваясь в​

    ​ As Long, m​​Как сделать выборку,​ DoEvents: DoEvents Next​

    ​Вместо​​With ActiveSheet.PageSetup​
    ​End Withточка перед​
    ​ заранее мануально, ну​ For i =​
    ​ кажется ли Вам​
    ​: сильно сказано :)​Код макроса содержит некоторую​
    ​’настройки структуры книги​ на рисунке:​ Иначе чудеса не​ макрос так, чтобы​Спасибо)​
    ​ подробности​
    ​ As Long Dim​ чтобы заполнялись к​ End SubЧто-то не​
    ​=ВПР(Бюджет!L3;Бюджет!L:L;1;ЛОЖЬ)​
    ​.Orientation = xlLandscape​
    ​ DisplayDrawingObjects означает, что​

    ​ или этим же​​ i_f To i_n​ что с жиру​
    ​Route​

    ​ информацию о структуре​NameListSerii = «Серии»​

    ​Несложно догадаться, что ячейки​​ закончатся.​ еще задать определенное​

    ​Юрий М​есть лист в​ sUser As String,​ примеру первые данные​ запускается на печать​проще дать прямую​.Zoom = False​ перед ним как​

    ​ макросом.​​ — 1 s_tmp​ бесимся?​
    ​: Да но так​ данной рабочей книги​

    ​NameListDanye = «Данные»​
    ​ B3, B4, B6​Hugo​
    ​ количество копий определенных​: Главное не написали:​
    ​ эксель нужно написать​ sPodr As String​
    ​ по КФ г.​

    ​ после ввода диапазона​​ ссылку​.FitToPagesWide = 1​

    ​ бы написано то,​Imelman​

    ​ = s_tmp &​
    ​Ну, для знатоков​ он просто сразу​
    ​ Excel: размещение исходных​AdresDannye = «A2:D20″​
    ​ и B7 предназначены​: У меня Эксель​
    ​ листов?​

    ​ «определённая» ячейка -​

    ​ макрос его печати​​ Set src =​
    ​ братска (будет 15​Hugo121​
    ​=Бюджет!L3​.FitToPagesTall = 1​
    ​ про что мы​: Да, в такой​ IIf(i > i_f,​
    ​ Excel — это​
    ​ выводит на печать​

    ​ данных и целевых,​AdresRekvizitov = «B3,​ для заполнения переменными​ проекты ВБА теряет,​Hugo​ это какая?​

    ​ при следующих условиях​​ Worksheets(1) Set dop​
    ​ уведомлений, т.к. 15​: 1. у меня​результат не изменится​End With​ написали With. Если​ форме сработало:​ Chr(10), «») &​ разминка ума, а​ тот лист на​ а также названия​ B4, B6, B7″​ данными из Таблицы​ гад…​: Строку .Worksheets(s).PrintOut Copies:=1​
    ​И зачем нам​печать выделенного фрагмента,​ = Worksheets(2) Set​ сумм). Наименование бюджета,​ не было ==​По вопросу -​Range(«A1:O23»).PrintOut​ без With, то​Sheets(Array(«1», «2»)).PrintOut Copies:=1,​ shs(i) Next i​ что для пользователя,​ котром был выполнен​ листов. Сами названия​’код программы​ Данных. А в​Но вряд ли​ видите?​ такой большой файл?​ вписывание всех столбцов​
    ​ dst = Worksheets(3)​

    ​ ФО и ОКТМО​​2. почему +2​

    ​ макросом организуете цикл​​ThisWorkbook.DisplayDrawingObjects = xlAll​

    ​ вот так КодThisWorkbook.DisplayDrawingObjects​
    ​ Collate:=True, _ IgnorePrintAreas:=False​ ActiveWindow.Sheets(Array(Split(s_tmp, Chr(10)))).PrintOut Copies:=1,​
    ​ задающего такую задачу?​ макрос, а мне​
    ​ листов указаны в​Set ListSerii =​
    ​ ячейку B9 введем​
    ​ в коде было​
    ​Проверяете s на​ А было бы​ в лист​
    ​ sUser = Trim$(src.Cells(i,​
    ​ будет одинаковое, разные​
    ​ только в одном​ по столбцу Бюджет!L:L​ ‘xlPlaceholders​ = xlHide .​Спасибо​ Collate:=True, IgnorePrintAreas:=False End​
    ​Два раза кликнуть​

    ​ нужно чтобы можно​​ строковых переменных NameListSerii​ ActiveWorkbook.Worksheets(NameListSerii)​ формулу, которая автоматически​ написано, что там​ «определённость», меняете количество.​ у Вас 100​макрорекордер ругается на​ 3)) sPodr =​ суммы ассигнований.​
    ​ случае? Ну да​ с заполнением ячейки​End Sub​ Короче, почитайте справку​

    ​BlackRaven​​ Sub​ мышкой «Файл_Печать» и​ было еще выбрать​
    ​ и NameListDannye.​Set ListDannye =​ вычислит сроки реализации​ должно было происходить?​

    planetaexcel.ru

    ​select case s​

    This free Excel macro illustrates all of the possible parameters and arguments that you can include in the PrintOut Method for Excel Macros and VBA in Excel. All of the arguments are explained below as well as how to use each argument and why you might want to use each argument.

    After reading this page, you will be able to create your own printing macros in Excel. One thing to note is that you only need to include the arguments which you want and they do not have to be in sequential order. For example, this means that if you don’t need the «PrintToFile» argument, simply don’t include it in your macro.

    The PrintOut Method in Excel is how you print anything and everything from Excel within a Macro. This however, does not provide all of the formatting options that are possible in Excel. There are many other things you can do in terms of formatting for printing if you use the PageSetup features in a Macro. However, you will still have to actually print the Excel worksheet or workbook and this is why you need to PrintOut Method in Excel Macros.

    PrintOut Arguments and Parameters Listed Below

    From

      This argument allows you to designate the number of the page from which you would like to start printing. This allows you to more specifically narrow down the section of the Excel workbook or file which you would like to print. If you don’t include this argument the printing will, by default, start with the first page of the file, simply the beginning of the file.

      • Set this argument equal to the number of the page from which you would like to start printing the Excel file.
      • Don’t include this argument if you want to start printing from the very first page of the file.

    To

      This argument allows you to determine the number of the last page to be printed from Excel. If you don’t include this argument Excel will print everything to the last page.

      • Set this argument equal to any integer that is within or up to the number of pages to be printed in order to tell Excel up to what page you want printed.
      • Don’t include this argument if you want all pages up to the last page (starting from where designated in the «From» argument if it is included) to be printed.

    Copies

      This argument allows you to tell Excel how many copies of a file you would like to have printed. If you don’t include this argument Excel will print one copy of the Excel file.

      • Set this to any number (integer) that corresponds with the number of copies which you would like to have printed.
      • Don’t include this argument if you simply want one copy of the Excel file to be printed.

    Preview

      If you want the macro to display the Print Preview window before the file is actually printed, you can use this argument. If you activate this argument, the file will not automatically print. Once the Print Preview window has been reached, the user will have to click the print button to actually make the document print. This is a good option to use if you need to verify the look and feel of the printed version of the file before it actually prints.

      • Set this argument to True to make the file appear in Print Preview mode before it is able to be printed.
      • Don’t include this argument or set it to False if you want the file to automatically and immediately print.

    ActivePrinter

      This is where you determine to what printer you would like to print. You can print to a regular paper printer, network printer, PDF printer, or any other printer that is already connected to the computer. The value for this argument is the actual name of the printer as it appears in the Print Dialog — to find out the name hit Ctrl + P in Excel and look to the Printer section at the very top and to the right of where it says «Name:» you will see a drop-down menu which lists all of the printers available to your computer. The exact text that appears there as the name for the printer is what you need to enter for this argument; remember that the name must go inside of quotation marks.

      • Put the name of the desired printer inside of quotation marks for this argument.
      • Don’t include this argument if you want to use the default printer.

    PrintToFile

      If you would like to print the Excel file to a file instead of from a printer onto paper, you can use this argument. This is most often used when converting an Excel file into a PDF file because you have to ‘print’ to the PDF file.

      • Set this argument to True if you want to print to a file.
      • Don’t include this argument or set it to False if you want to print the Excel file to paper.

    Collate

      This option allows you to determine whether or not you would like the printed copies of the workbook or worksheet to be collated. This argument is irrelevant if you are only printing one copy.
      COLLATE: This means that if you have a five page document, which you want to print 2 times, and you choose to collate the document, it will print in this order: 12345 12345. If you choose not to collate the document will print in this order: 11 22 33 44 55.

      • Set this to True to collate copies of the printed Excel file.
      • Set this to False in order not to collate multiple copies of the Excel file.

    PrToFileName

      If PrintToFile is set to True, this will specify the name to which you would like to save the file. Depending on the type of file you are printing and the software used, this may or may not actually set the saved file to the name defined here.

      • Make sure to enclose the name in quotes or leave this argument blank or with empty quotes (i.e. quotes with nothing in between.

    IgnorePrintAreas

      This determines whether or not to respect prescribed print areas within the worksheet or to simply print the entire worksheet or workbook and not just the selected print areas.

      • Set this to True to ignore print areas in Excel.
      • Don’t include the argument or set it to False to respect print areas in Excel.

    Where to install the macro:  Module

    Macro to Print in Excel — Complete PrintOut Method with All Arguments Listed

    Sub PrintOut_Method_All_Parameters_Listed()
    'List of all of the optional parameters for printing an Excel spreadsheet using the PrintOut method

    Worksheets.PrintOut _
    From:=1, _
    To:=10, _
    Copies:=1, _
    Preview:=False, _
    ActivePrinter:="", _
    PrintToFile:=False, _
    Collate:=True, _
    PrToFileName:="", _
    IgnorePrintAreas:=False

    End Sub


    Excel VBA Course

    Excel VBA Course — From Beginner to Expert

    200+ Video Lessons
    50+ Hours of Instruction
    200+ Excel Guides

    Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)

    View Course

    How to Install the Macro

    1. Select and copy the text from within the grey box above.
    2. Open the Microsoft Excel file in which you would like the Macro to function.
    3. Press «Alt + F11» — This will open the Visual Basic Editor — Works for all Excel Versions.
       Or For other ways to get there, Click Here.
    4. On the new window that opens up, go to the left side where the vertical pane is located. Locate your Excel file; it will be called VBAProject (YOUR FILE’S NAME HERE) and click this.
    5. If the Macro goes in a Module, Click Here, otherwise continue to Step 8.
    6. If the Macro goes in the Workbook or ThisWorkbook, Click Here, otherwise continue to Step 8.
    7. If the Macro goes in the Worksheet Code, Click Here, otherwise continue to Step 8.
    8. Close the Microsoft Visual Basic Editor window and save the Excel file. When you close the Visual Basic Editor window, the regular Excel window will not close.
    9. You are now ready to run the macro.

    Excel VBA Course

    Excel VBA Course — From Beginner to Expert

    200+ Video Lessons

    50+ Hours of Video

    200+ Excel Guides

    Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)

    View Course

    на листе экселя кнопка для отправки на печать

    koyaanisqatsi

    Дата: Среда, 04.02.2015, 10:04 |
    Сообщение № 1

    Группа: Проверенные

    Ранг: Ветеран

    Сообщений: 712


    Репутация:

    15

    ±

    Замечаний:
    0% ±


    Excel 2010

    Допустим имя принтера сработает и порт не надо будет прописывать.

    Как послать активный лист экселя который содержит много разрывов страниц на принтер указанный в макросе отличный от дефолтного и чтобы макрос не менял дефолтный принтер. Просто при нажатии отправлял на прописаный принтер.

    К сообщению приложен файл:

    7531803.xlsx
    (55.6 Kb)

     

    Ответить

    SLAVICK

    Дата: Среда, 04.02.2015, 11:13 |
    Сообщение № 2

    Группа: Модераторы

    Ранг: Старожил

    Сообщений: 2290


    Репутация:

    766

    ±

    Замечаний:
    0% ±


    2019

    Изменил сообщение, еще раз :o :(

    [vba]

    Код

    Sub dd()
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:=»Microsoft XPS Document Writer»‘ Вместо «Microsoft XPS Document Writer» — впишите нужный принтер
    End Sub

    [/vba]
    На первый взгляд — то что нужно :D
    Чтоб вернуть принтер назад:
    Application.ActivePrinter = «MyPrinter» ‘ Вместо MyPrinter вписать нужный принтер.

    Взял здесь

    К сообщению приложен файл:

    7531803.xlsm
    (55.8 Kb)


    Иногда все проще чем кажется с первого взгляда.

    Сообщение отредактировал SLAVICKСреда, 04.02.2015, 12:02

     

    Ответить

    SLAVICK

    Дата: Среда, 04.02.2015, 12:08 |
    Сообщение № 3

    Группа: Модераторы

    Ранг: Старожил

    Сообщений: 2290


    Репутация:

    766

    ±

    Замечаний:
    0% ±


    2019

    Подкорректировал макрос :D

    [vba]

    Код

    Sub Отправка_листа_на_нужный_принтер()
    Dim aPr$
    aPr = Application.ActivePrinter
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:=»Microsoft XPS Document Writer» ‘ Вместо «Microsoft XPS Document Writer» — впишите нужный принтер
    Application.ActivePrinter = aPr ‘ Возврат активного принтера
    End Sub

    [/vba]


    Иногда все проще чем кажется с первого взгляда.

    Сообщение отредактировал SLAVICKСреда, 04.02.2015, 12:09

     

    Ответить

    koyaanisqatsi

    Дата: Четверг, 05.02.2015, 09:41 |
    Сообщение № 4

    Группа: Проверенные

    Ранг: Ветеран

    Сообщений: 712


    Репутация:

    15

    ±

    Замечаний:
    0% ±


    Excel 2010

    Обалдеть красота ! ! ! Счастье )))) Все работает.

     

    Ответить

    koyaanisqatsi

    Дата: Четверг, 05.02.2015, 10:17 |
    Сообщение № 5

    Группа: Проверенные

    Ранг: Ветеран

    Сообщений: 712


    Репутация:

    15

    ±

    Замечаний:
    0% ±


    Excel 2010

    К теме наверно уже не относится только непонятно что делать с таким явлением. Я не знаю от чего это зависит и будет ли менятся в дальнейшем. Принтер на который надо послать пока называется так «ZDesigner GC420d (перенаправлено 19)» Меня вот конкретно это смущает » (перенаправлено 19)» вижу в списках часто что за принтером пишется такая зяба и цифры разные. Если для этого номер изменится то по кнопке и печать не пойдет (

     

    Ответить

    SLAVICK

    Дата: Четверг, 05.02.2015, 11:35 |
    Сообщение № 6

    Группа: Модераторы

    Ранг: Старожил

    Сообщений: 2290


    Репутация:

    766

    ±

    Замечаний:
    0% ±


    2019

    Так воспользуйтесь проверкой наличия принтера в списке доступных.
    Вы же в теме спрашивали про список доступных принтеров :D
    Если нужный принтер есть — печатаем, если нет — предлагаем выбрать из списка, или выходим… как то так <_<
    [vba]

    Код

    Sub Отправка_листа_на_нужный_принтер_c_проверкой()
    Dim aPr$, s$, AllPrinters As Object, printer As Object, n%, m, primary_printer$, print_name$
    primary_printer = «doPDF v9» ‘ Вместо «doPDF v7» — впишите нужный принтер по умолчанию
    aPr = Application.ActivePrinter
    Set AllPrinters = GetObject(«winmgmts://./root/CIMV2»).ExecQuery(«SELECT * FROM Win32_Printer», , 48)
    ‘Получаем список принтеров
         For Each printer In AllPrinters
             n = n + 1
             s = s & vbCr & n & «: » & printer.name
             If printer.name = primary_printer Then print_name = primary_printer: Exit For ‘ если primary_printer найден в списке доступных
         Next
         s = Right(s, Len(s) — 1)
    ‘Если такого принтера не найдено:
    If print_name = «» Then
         If InStr(1, s, vbCr, vbTextCompare) = 0 Then MsgBox «Error no printers»: Exit Sub
         m = Split(s, vbCr)
         n = InputBox(«input Number of printer:» & vbCr & s, «Not found:» & primary_printer, 1)
         If n > UBound(m) Or n = 0 Then MsgBox «Error no printers with this number»: Exit Sub
         print_name = Split(m(n — 1), » «, 2)(1)
    End If
    ‘===============================
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:=print_name
    Application.ActivePrinter = aPr ‘ Возврат активного принтера
    End Sub

    [/vba]

    К сообщению приложен файл:

    2632828.xlsm
    (55.4 Kb)


    Иногда все проще чем кажется с первого взгляда.

    Сообщение отредактировал SLAVICKЧетверг, 05.02.2015, 23:21

     

    Ответить

    koyaanisqatsi

    Дата: Пятница, 06.02.2015, 12:18 |
    Сообщение № 7

    Группа: Проверенные

    Ранг: Ветеран

    Сообщений: 712


    Репутация:

    15

    ±

    Замечаний:
    0% ±


    Excel 2010

    SLAVICK, ОГО !

    Спасибо доберусь до этого макроса в Понедельник но думаю что все будет работать Спасибо огромное )

     

    Ответить

    koyaanisqatsi

    Дата: Понедельник, 16.02.2015, 14:53 |
    Сообщение № 8

    Группа: Проверенные

    Ранг: Ветеран

    Сообщений: 712


    Репутация:

    15

    ±

    Замечаний:
    0% ±


    Excel 2010

    SLAVICK, Еще раз спасибо. Макрос работает почти идеально.
    Внедрил. Отчитываюсь о работе.

    1. Если при выборе принтера нажать эскейп то выдает сообщение об ошибке. Дебаг в строке
    [vba]

    Код

        n = InputBox(«input Number of printer:» & vbCr & s, «Not found:» & primary_printer, 1)

    [/vba]

    2. После отправки на печать если все хорошо сам эксель или макрос подвешивается на секунды 3-5 где-то. Наверно это плохо.

    Скорее всего второе важнее чем первое.

    И еще маленький вопросик. Если я создам отдельную страницу для того что бы этот макрос брал оттуда название принтера. Как это написать в самом макросе ? просто тут такая проблемака что имя принтера не статично вчера допустим было ZDesigner GC420d (перенаправлено 16) а завтра будет к примеру ZDesigner GC420d (перенаправлено 21)

    Если бы можно было в ячейке изменять а в идеале сохранять макросом и брать оттуда последний выбранный принтер то было бы просто идеально. Ну скажем страница будет называться Принтер ячейка любая.

    Заранее благодарен.

    Сообщение отредактировал koyaanisqatsiПонедельник, 16.02.2015, 14:58

     

    Ответить

    SLAVICK

    Дата: Понедельник, 16.02.2015, 15:53 |
    Сообщение № 9

    Группа: Модераторы

    Ранг: Старожил

    Сообщений: 2290


    Репутация:

    766

    ±

    Замечаний:
    0% ±


    2019

    1. исправьте строку на:
    [vba]

    Код

    n = Val(InputBox(«input Number of printer:» & vbCr & s, «Not found:» & primary_printer, 1))

    [/vba]
    2. возможно(у меня нет задержек). Макрос изменяет активность принтера(два раза на указанный, а потом на первоначальный). Если принтер сетевой- нужно ему отправить запрос, и получить с него ответ. Тут вопрос быстродействия связи сетки… Кроме того изменяются параметры печати согласно этому принтеру. Чем больше документ, тем больше нужно изменять. Не думаю, что это можно как-то исправить
    3. так укажите полный путь к ячейке с листом например:
    [vba]

    Код

    primary_printer = Sheets(«printer»).Cells(1, «a»).Value ‘ Вместо «doPDF v7» — впишите нужный принтер по умолчанию

    [/vba]

    К сообщению приложен файл:

    2649787.xlsm
    (60.1 Kb)


    Иногда все проще чем кажется с первого взгляда.

    Сообщение отредактировал SLAVICKПонедельник, 16.02.2015, 15:56

     

    Ответить

    koyaanisqatsi

    Дата: Понедельник, 16.02.2015, 16:29 |
    Сообщение № 10

    Группа: Проверенные

    Ранг: Ветеран

    Сообщений: 712


    Репутация:

    15

    ±

    Замечаний:
    0% ±


    Excel 2010

    SLAVICK, Спасибо.
    А чтобы он сохранял в ячейку последний выбранный если не нашел предыдущий принтер так можно ? Или придется самостоятельно в той ячейке исправлять название принтера на новое текущее если изменится последнее число в названии принтера ?

    С сетью понял, мы посылаем с сервера на локальный принтер. Хотя если без макроса посылать такой задержки нет. Ну ладно. Остальное все работает кроме сохранения последнего выбранного принтера в ячейку на странице printer в A1

    Сообщение отредактировал koyaanisqatsiПонедельник, 16.02.2015, 16:40

     

    Ответить

    SLAVICK

    Дата: Понедельник, 16.02.2015, 18:44 |
    Сообщение № 11

    Группа: Модераторы

    Ранг: Старожил

    Сообщений: 2290


    Репутация:

    766

    ±

    Замечаний:
    0% ±


    2019

    Можно. :D
    после
    [vba]

    Код

    print_name = Split(m(n — 1), » «, 2)(1)

    [/vba]
    добавьте:
    [vba]

    Код

    Sheets(«printer»).Cells(1, «a»).Value = print_name

    [/vba]

    К сообщению приложен файл:

    1777020.xlsm
    (60.3 Kb)


    Иногда все проще чем кажется с первого взгляда.

     

    Ответить

    koyaanisqatsi

    Дата: Вторник, 17.02.2015, 10:12 |
    Сообщение № 12

    Группа: Проверенные

    Ранг: Ветеран

    Сообщений: 712


    Репутация:

    15

    ±

    Замечаний:
    0% ±


    Excel 2010

    SLAVICK, Не зря я этим обеспокоился )
    Отлично работает. И имя принтера конечно же уже поменялось. Но теперь проблема не проблема )

     

    Ответить

    Skip to content

    На чтение 1 мин. Просмотров 3.1k.

    Что делает макрос: Если вы хотите распечатать все листы файла (или отдельные) вручную в Excel, для этого нужно зажать клавишу CTRL на клавиатуре, выбрать листы, которые требуется распечатать, и нажать кнопку печать. Если вы делаете это достаточно часто, можете использовать этот простой макрос.

    Содержание

    1. Как работает макрос
    2. Код макроса
    3. Как использовать

    Как работает макрос

    Это очень просто. Все, что нам нужно сделать — это выбрать листы, которые мы хотим напечатать. Затем мы используем метод печати, чтобы запустить. Все листы, которые вы выбрали, печатаются на одном дыхании.

    Код макроса

    Sub PechatOpredelennihListov()
    'Печать определенных листов
    ActiveWorkbook.Sheets( _
    Array("Лист1", "Лист3", "Лист5")).PrintOut Copies:=1
    End Sub
    

    Хотите напечатать все рабочие листы в книге? Это еще проще.

    Sub PechatVsehListov()
    'Печать всех листов
    ActiveWorkbook.Worksheets.PrintOut Copies:=1
    End Sub
    

    Как использовать

    1. Активируйте редактор Visual Basic, нажав ALT + F11.
    2. Щелкните правой кнопкой мыши personal.xlb в окне Project.
    3. Выберите Insert➜Module.
    4. Введите или вставьте код во вновь созданном модуле.

    Понравилась статья? Поделить с друзьями:
  • Макрос excel перенос строк
  • Макрос excel перенос столбца
  • Макрос excel перенос листов на один
  • Макрос excel перенос значений
  • Макрос excel переменная диапазон