Новости:

Из правил форума: Тема должна отражать суть вопроса, топики типа "help please" будут удаляться!

Главное меню

макрос с выбором принтера при печати

Автор krilovsky68, 21.06.2023, 18:09

« назад - далее »

Serge 007

Цитата: krilovsky68 от 22.06.2023, 14:34Sheets("S").PrintOut ActivePrinter:="MyPrinter" Copies:=Sheets("форма").Range("j17")так нельзя
Цитата: Serge 007 от 21.06.2023, 11:18У метода PrintOut пятый аргумент ActivePrinter как раз задает имя активного принтера
Так будет работать:
Sheets("S").PrintOut Copies:=Sheets("форма").Range("j17"), ActivePrinter:="MyPrinter"

Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

Serge 007

Цитата: krilovsky68 от 22.06.2023, 14:38нужна возможность выбора принтера
Sub soglashenie()
    Dim i&
    DefaultPrinter = Application.ActivePrinter
    MyPrinter = Application.Dialogs(xlDialogPrinterSetup).Show
        For i = Range("'форма'!j10") - 1 To Range("'форма'!k10") - 1
            i = i + 1
                Range("'S'!C2") = i
                Sheets("S").PrintOut Copies:=Sheets("форма").Range("j17"), ActivePrinter:="MyPrinter"
        Next i
        Application.ActivePrinter = DefaultPrinter
    Sheets("форма").Activate
End Sub
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

krilovsky68

пишу с телефона, поэтому возможны ошибки.
код понятен.
j17 это количество копий.
в листе s это не требуется.
только в n
но структура построения макрос понятна

Serge 007

Цитата: krilovsky68 от 22.06.2023, 15:32j17 это количество копий.
в листе s это не требуется.
Цитата: krilovsky68 от 22.06.2023, 14:34Sheets("S").PrintOut ActivePrinter:="MyPrinter" Copies:=Sheets("форма").Range("j17")
Вы писали про копии для листа S
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

krilovsky68

#19
Цитата: Serge 007 от 22.06.2023, 15:49Вы писали про копии для листа
понял ошибку. писал практически с телефона.
итоговый код
Sub печать()
DefaultPrinter = Application.ActivePrinter
MyPrinter = Application.Dialogs(xlDialogPrinterSetup).Show
Sheets("N").PrintOut Copies:=Sheets("форма").Range("j17"), ActivePrinter:="MyPrinter"
Sheets("форма").Activate
End Sub
хотя честно говоря не совсем понял, почему макрос настолько сократился.
Остается подумать над нумерацией...

Всем огромное спасибо.