Допустим есть 117 страниц для печати на на одном листе экселя допустим "лист1" Если мы знаем количество листов необходимое для печати, можно ли сказать экселю в автоматическом режиме печатать только нужные 50 или нужные 15 из этих 117-ти, при условии того что мы знаем заранее сколько надо и эта цыфра есть в экселе.
PS: Если это можно решить другими методами например VBA переведите пожалуйста тему в раздел VBA. Спасибо.
Здравствуйте.
Допустим есть 117 страниц для печати на на одном листе экселя допустим "лист1" Если мы знаем количество листов необходимое для печати, можно ли сказать экселю в автоматическом режиме печатать только нужные 50 или нужные 15 из этих 117-ти, при условии того что мы знаем заранее сколько надо и эта цыфра есть в экселе.
PS: Если это можно решить другими методами например VBA переведите пожалуйста тему в раздел VBA. Спасибо.koyaanisqatsi
koyaanisqatsi, держите еще вот такую простенькую процедуру, вдруг пригодится [vba]
Код
Sub PrintPages(StrPages$) For Each rr In Split(StrPages$, ",") ActiveWindow.SelectedSheets.PrintOut Split(rr, "-")(0), Split(rr, "-")(IIf(InStr(rr, "-"), 1, 0)), 1 Next End Sub Sub пример_использования() PrintPages "1-3,10-15,20-60" End Sub
[/vba]
upd ошибочка вышла, исправил код
koyaanisqatsi, держите еще вот такую простенькую процедуру, вдруг пригодится [vba]
Код
Sub PrintPages(StrPages$) For Each rr In Split(StrPages$, ",") ActiveWindow.SelectedSheets.PrintOut Split(rr, "-")(0), Split(rr, "-")(IIf(InStr(rr, "-"), 1, 0)), 1 Next End Sub Sub пример_использования() PrintPages "1-3,10-15,20-60" End Sub
krosav4ig, наверно надо было хоть пару слов написать о ней. Я то не читаю код VBA. Я тут еще подумал что было бы не плохо выбирать нужный принтер но скорее всего это можно найти в инете. Как-то видил такую тему.
А вот код Бороды скорее всего буду юзать пока не проверить без принтера. Нажал на макрос он куда-то что-то послал не известно в каком количестве и куда ( Скорее всего этот код с допиской выбора принтера будет то что надо .
krosav4ig, наверно надо было хоть пару слов написать о ней. Я то не читаю код VBA. Я тут еще подумал что было бы не плохо выбирать нужный принтер но скорее всего это можно найти в инете. Как-то видил такую тему.
А вот код Бороды скорее всего буду юзать пока не проверить без принтера. Нажал на макрос он куда-то что-то послал не известно в каком количестве и куда ( Скорее всего этот код с допиской выбора принтера будет то что надо .koyaanisqatsi
Я понял так, что листом вы считаете диапазон, например для первого листа A2:C12. Необходимо задать область печати из заданного количества таких листиков.[vba]
Код
Sub Макрос() S = Sheets("Лист2").Range("B3") 'С какого листа N = Sheets("Лист2").Range("B4") 'Кол-во листов Sc = 11 * (S - 1) + 2 'Стартовая ячейка Nc = 11 * (S + N - 1) + 1 'Конечная ячейка ActiveSheet.PageSetup.PrintArea = "$A$" & Sc & ":$C$" & Nc End Sub
[/vba]
Я понял так, что листом вы считаете диапазон, например для первого листа A2:C12. Необходимо задать область печати из заданного количества таких листиков.[vba]
Код
Sub Макрос() S = Sheets("Лист2").Range("B3") 'С какого листа N = Sheets("Лист2").Range("B4") 'Кол-во листов Sc = 11 * (S - 1) + 2 'Стартовая ячейка Nc = 11 * (S + N - 1) + 1 'Конечная ячейка ActiveSheet.PageSetup.PrintArea = "$A$" & Sc & ":$C$" & Nc End Sub
AlexM, Так вроде область печати задана уже ? Хотя она бывает скидывается если принтер не тот. Но если правильный выбрать то вроде остается на месте. Да я имел ввиду те маленькие листы которые образуются границами печати и разрывом листа. Единственное я не понял Берем информацию с листа "Лист2" а какой выводим на печать ? или тот на котором находимся в данный момент ?
AlexM, Так вроде область печати задана уже ? Хотя она бывает скидывается если принтер не тот. Но если правильный выбрать то вроде остается на месте. Да я имел ввиду те маленькие листы которые образуются границами печати и разрывом листа. Единственное я не понял Берем информацию с листа "Лист2" а какой выводим на печать ? или тот на котором находимся в данный момент ?koyaanisqatsi
_Boroda_, Красотень! Ну вы наверно и без объяснений знаете почему не вкладывают примеры зачастую , потому что сами с мыслями собраться не могут и не понимают сколько разнообразных вариантов решения в принципе возможно. Я можно сказать вовремя одумался и прикрепил а мог бы наверно тоже схлопатать )
Спасибо ! С вами наша работа и многих других становится проще)
_Boroda_, Красотень! Ну вы наверно и без объяснений знаете почему не вкладывают примеры зачастую , потому что сами с мыслями собраться не могут и не понимают сколько разнообразных вариантов решения в принципе возможно. Я можно сказать вовремя одумался и прикрепил а мог бы наверно тоже схлопатать )
Спасибо ! С вами наша работа и многих других становится проще)koyaanisqatsi
krosav4ig, скорее всего таким вариантом буду пользоватся. [vba]
Код
ThisDocument.Printer = "НР LaserJet 1320 PCL 6"
[/vba]
Или придется искать что-то похожее только не к данному документу присвоенное а просто при запуске макроса чтобы лист посылал на определенный принтер не меня дефолтный для данного документа.
krosav4ig, скорее всего таким вариантом буду пользоватся. [vba]
Код
ThisDocument.Printer = "НР LaserJet 1320 PCL 6"
[/vba]
Или придется искать что-то похожее только не к данному документу присвоенное а просто при запуске макроса чтобы лист посылал на определенный принтер не меня дефолтный для данного документа.koyaanisqatsi
Сообщение отредактировал Serge_007 - Воскресенье, 01.02.2015, 21:43
Private Function GetPrinter$(PrinterName$) Dim StrKey$: StrKey = "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices\" With CreateObject("WScript.Shell") GetPrinter = PrinterName & " (" & Split(.RegRead(StrKey & PrinterName), ",")(1) & ")" End With End Function Private Sub Workbook_Activate() On Error Resume Next Me.CustomDocumentProperties.Add "printer", 0, 4, "имя принтера" CustomDocumentProperties("printer") = "имя принтера" Parent.ActivePrinter = GetPrinter(CustomDocumentProperties("printer")) End Sub
Private Function GetPrinter$(PrinterName$) Dim StrKey$: StrKey = "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Devices\" With CreateObject("WScript.Shell") GetPrinter = PrinterName & " (" & Split(.RegRead(StrKey & PrinterName), ",")(1) & ")" End With End Function Private Sub Workbook_Activate() On Error Resume Next Me.CustomDocumentProperties.Add "printer", 0, 4, "имя принтера" CustomDocumentProperties("printer") = "имя принтера" Parent.ActivePrinter = GetPrinter(CustomDocumentProperties("printer")) End Sub