Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/динамическое задание количества страниц для печати - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
динамическое задание количества страниц для печати
koyaanisqatsi Дата: Воскресенье, 01.02.2015, 16:41 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
Здравствуйте.

Допустим есть 117 страниц для печати на на одном листе экселя допустим "лист1" Если мы знаем количество листов необходимое для печати, можно ли сказать экселю в автоматическом режиме печатать только нужные 50 или нужные 15 из этих 117-ти, при условии того что мы знаем заранее сколько надо и эта цыфра есть в экселе.

PS: Если это можно решить другими методами например VBA переведите пожалуйста тему в раздел VBA. Спасибо.
К сообщению приложен файл: primer333.xlsx (50.0 Kb)


Сообщение отредактировал koyaanisqatsi - Воскресенье, 01.02.2015, 16:54
 
Ответить
СообщениеЗдравствуйте.

Допустим есть 117 страниц для печати на на одном листе экселя допустим "лист1" Если мы знаем количество листов необходимое для печати, можно ли сказать экселю в автоматическом режиме печатать только нужные 50 или нужные 15 из этих 117-ти, при условии того что мы знаем заранее сколько надо и эта цыфра есть в экселе.

PS: Если это можно решить другими методами например VBA переведите пожалуйста тему в раздел VBA. Спасибо.

Автор - koyaanisqatsi
Дата добавления - 01.02.2015 в 16:41
_Boroda_ Дата: Воскресенье, 01.02.2015, 17:14 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16711
Репутация: 6502 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Если макросом, то
[vba]
Код
ActiveWindow.SelectedSheets.PrintOut From:=[D1], To:=[E1]
[/vba]
D1 - номер первой страницы, Е1 - номер последней страницы нужного диапазона


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЕсли макросом, то
[vba]
Код
ActiveWindow.SelectedSheets.PrintOut From:=[D1], To:=[E1]
[/vba]
D1 - номер первой страницы, Е1 - номер последней страницы нужного диапазона

Автор - _Boroda_
Дата добавления - 01.02.2015 в 17:14
krosav4ig Дата: Воскресенье, 01.02.2015, 17:25 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
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
ошибочка вышла, исправил код


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Воскресенье, 01.02.2015, 17:36
 
Ответить
Сообщение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
ошибочка вышла, исправил код

Автор - krosav4ig
Дата добавления - 01.02.2015 в 17:25
koyaanisqatsi Дата: Воскресенье, 01.02.2015, 17:35 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
krosav4ig, наверно надо было хоть пару слов написать о ней. Я то не читаю код VBA. Я тут еще подумал что было бы не плохо выбирать нужный принтер но скорее всего это можно найти в инете. Как-то видил такую тему.

А вот код Бороды скорее всего буду юзать пока не проверить без принтера. Нажал на макрос он куда-то что-то послал не известно в каком количестве и куда (
Скорее всего этот код с допиской выбора принтера будет то что надо .
 
Ответить
Сообщениеkrosav4ig, наверно надо было хоть пару слов написать о ней. Я то не читаю код VBA. Я тут еще подумал что было бы не плохо выбирать нужный принтер но скорее всего это можно найти в инете. Как-то видил такую тему.

А вот код Бороды скорее всего буду юзать пока не проверить без принтера. Нажал на макрос он куда-то что-то послал не известно в каком количестве и куда (
Скорее всего этот код с допиской выбора принтера будет то что надо .

Автор - koyaanisqatsi
Дата добавления - 01.02.2015 в 17:35
AlexM Дата: Воскресенье, 01.02.2015, 17:43 | Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4517
Репутация: 1129 ±
Замечаний: 0% ±

Excel 2003
Я понял так, что листом вы считаете диапазон, например для первого листа 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]



Номер мобильного модема (без голосовой связи)
9269171249 МегаФон, Московский регион.
 
Ответить
СообщениеЯ понял так, что листом вы считаете диапазон, например для первого листа 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]

Автор - AlexM
Дата добавления - 01.02.2015 в 17:43
koyaanisqatsi Дата: Воскресенье, 01.02.2015, 17:49 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
AlexM, Так вроде область печати задана уже ? Хотя она бывает скидывается если принтер не тот. Но если правильный выбрать то вроде остается на месте. Да я имел ввиду те маленькие листы которые образуются границами печати и разрывом листа.
Единственное я не понял Берем информацию с листа "Лист2" а какой выводим на печать ? или тот на котором находимся в данный момент ?
 
Ответить
СообщениеAlexM, Так вроде область печати задана уже ? Хотя она бывает скидывается если принтер не тот. Но если правильный выбрать то вроде остается на месте. Да я имел ввиду те маленькие листы которые образуются границами печати и разрывом листа.
Единственное я не понял Берем информацию с листа "Лист2" а какой выводим на печать ? или тот на котором находимся в данный момент ?

Автор - koyaanisqatsi
Дата добавления - 01.02.2015 в 17:49
_Boroda_ Дата: Воскресенье, 01.02.2015, 17:55 | Сообщение № 7
Группа: Админы
Ранг: Местный житель
Сообщений: 16711
Репутация: 6502 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
Ну вот! Пример нужно сразу класть.
В имя "Область печати" пишите такую формулу
Код
=СМЕЩ('Ог Сол'!$A$1;('Ог Сол'!$F$2-1)*11+1;;11*'Ог Сол'!$F$3;3)

F2 и F3 - начало и количество

В ячейке А901 отсутствует Дата фасовки.
К сообщению приложен файл: primer333_1.xlsx (50.3 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНу вот! Пример нужно сразу класть.
В имя "Область печати" пишите такую формулу
Код
=СМЕЩ('Ог Сол'!$A$1;('Ог Сол'!$F$2-1)*11+1;;11*'Ог Сол'!$F$3;3)

F2 и F3 - начало и количество

В ячейке А901 отсутствует Дата фасовки.

Автор - _Boroda_
Дата добавления - 01.02.2015 в 17:55
koyaanisqatsi Дата: Воскресенье, 01.02.2015, 18:08 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
_Boroda_, Красотень! Ну вы наверно и без объяснений знаете почему не вкладывают примеры зачастую , потому что сами с мыслями собраться не могут и не понимают сколько разнообразных вариантов решения в принципе возможно. Я можно сказать вовремя одумался и прикрепил а мог бы наверно тоже схлопатать )

Спасибо ! С вами наша работа и многих других становится проще)
 
Ответить
Сообщение_Boroda_, Красотень! Ну вы наверно и без объяснений знаете почему не вкладывают примеры зачастую , потому что сами с мыслями собраться не могут и не понимают сколько разнообразных вариантов решения в принципе возможно. Я можно сказать вовремя одумался и прикрепил а мог бы наверно тоже схлопатать )

Спасибо ! С вами наша работа и многих других становится проще)

Автор - koyaanisqatsi
Дата добавления - 01.02.2015 в 18:08
krosav4ig Дата: Воскресенье, 01.02.2015, 19:13 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
koyaanisqatsi, по поводу выбора принтера
[vba]
Код
Sub пример_использования()
      If Application.Dialogs(xlDialogPrinterSetup).Show Then PrintPages "1-3,4,5-7"
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Воскресенье, 01.02.2015, 19:35
 
Ответить
Сообщениеkoyaanisqatsi, по поводу выбора принтера
[vba]
Код
Sub пример_использования()
      If Application.Dialogs(xlDialogPrinterSetup).Show Then PrintPages "1-3,4,5-7"
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 01.02.2015 в 19:13
koyaanisqatsi Дата: Воскресенье, 01.02.2015, 19:35 | Сообщение № 10
Группа: Проверенные
Ранг: Ветеран
Сообщений: 713
Репутация: 15 ±
Замечаний: 0% ±

Excel 2010
krosav4ig, скорее всего таким вариантом буду пользоватся.
[vba]
Код
ThisDocument.Printer = "НР LaserJet 1320 PCL 6"
[/vba]

Или придется искать что-то похожее только не к данному документу присвоенное а просто при запуске макроса чтобы лист посылал на определенный принтер не меня дефолтный для данного документа.


Сообщение отредактировал Serge_007 - Воскресенье, 01.02.2015, 21:43
 
Ответить
Сообщениеkrosav4ig, скорее всего таким вариантом буду пользоватся.
[vba]
Код
ThisDocument.Printer = "НР LaserJet 1320 PCL 6"
[/vba]

Или придется искать что-то похожее только не к данному документу присвоенное а просто при запуске макроса чтобы лист посылал на определенный принтер не меня дефолтный для данного документа.

Автор - koyaanisqatsi
Дата добавления - 01.02.2015 в 19:35
krosav4ig Дата: Воскресенье, 01.02.2015, 22:29 | Сообщение № 11
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
дефолтный для данного документа.

в модуль ЭтаКнига
[vba]
Код
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
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Воскресенье, 01.02.2015, 22:35
 
Ответить
Сообщение
дефолтный для данного документа.

в модуль ЭтаКнига
[vba]
Код
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
[/vba]

Автор - krosav4ig
Дата добавления - 01.02.2015 в 22:29
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!