Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2017, 09:28   #1
genn931
 
Регистрация: 21.01.2017
Сообщений: 5
По умолчанию быстрая печать текущей страницы в Excel как в ворде?

Существует многостраничный размеченный лист в Excel, и возникает необходимость быстрой печати трех экз.(как в ворде печать текущей страницы) той страницы на которой указатель мыши, или маркер клавиатуры, а не всех листов.
В идеале, вообще либо создание отдельной кнопки для этого, или сочетания клавиш, только для этой книги. Не силен в макросах! Поэтому прошу советов гуру))). Заранее спасибо!
Вложения
Тип файла: xlsx 11.xlsx (20.9 Кб, 8 просмотров)

Последний раз редактировалось genn931; 21.01.2017 в 09:54.
genn931 вне форума Ответить с цитированием
Старый 21.01.2017, 15:11   #2
genn931
 
Регистрация: 21.01.2017
Сообщений: 5
По умолчанию помогите советом

вот нашел макрос похожий.
Но сразу два но,
первое как в нем исправить что бы если нажать отмену(в данном случае как пример печатает 1 и 3 стр.) он ничего не печатал!

второе, как сократить кол-во запрашиваемых окон(достаточно первого одного)?

Код:
Private Sub ПечатьЧНС() 
Количество = ExecuteExcel4Macro("GET.DOCUMENT(50)") 

If Количество = 0 Then 
MsgBox Prompt:="Нет данных для вывода на печать", _ 
Buttons:=vbCritical, Title:="" 
Exit Sub 
End If 

Первый = Application.InputBox( _ 
Prompt:="Введите номер первой страницы", _ 
Title:="Печать", Type:=1) 
Последний = Application.InputBox( _ 
Prompt:="Введите номер последней страницы", _ 
Title:="Печать", Type:=1) 

If Первый < 1 Or _ 
Первый > Количество Then Первый = 1 
If Последний < Первый Or _ 
Последний > Количество Then Последний = Количество 

For Лист = Первый To Последний Step 2 
Application.ActiveSheet.PrintOut From:=Лист, To:=Лист 
Next 

If MsgBox(Prompt:="Хотите ли Вы продолжить печать ?", _ 
Buttons:=vbYesNo, Title:="") = vbNo Then 
Exit Sub 
Else 
MsgBox Prompt:="Переверните листы и нажмите 'ОК'", _ 
Buttons:=vbOKOnly, Title:="" 
End If 

For Лист = Первый + 1 To Последний Step 2 
Application.ActiveSheet.PrintOut From:=Лист, To:=Лист 
Next 

End Sub

Последний раз редактировалось Аватар; 21.01.2017 в 15:32.
genn931 вне форума Ответить с цитированием
Старый 21.01.2017, 18:30   #3
genn931
 
Регистрация: 21.01.2017
Сообщений: 5
По умолчанию

изменил:
Sub ПечатьТЕКУЩЕЙстраницы()
Количество = ExecuteExcel4Macro("GET.DOCUMENT(50 )")
Первый = Application.InputBox( _
Prompt:="Введите номер страницы", _
Title:="Печать", Type:=1)
If Первый < 1 Or _
Первый > Количество Then Первый = 1
If Последний < Первый Or _
Последний > Количество Then Последний = Количество
For Лист = Первый To Последний Step 2
Application.ActiveSheet.PrintOut From:=Лист, To:=Лист
Exit Sub
Next
End Sub

только при отмене, все равно печатает 1 страницу, подскажите как этого избежать? Что бы при нажатие отмена в окне выбора страницы, ничего не печаталось????
genn931 вне форума Ответить с цитированием
Старый 21.01.2017, 20:21   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от genn931 Посмотреть сообщение
Что бы при нажатие отмена в окне выбора страницы, ничего не печаталось????
ответы там:
https://social.msdn.microsoft.com/Fo...orum=accessdev
http://stackoverflow.com/questions/2...tbox-vba-excel
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 21.01.2017, 21:01   #5
genn931
 
Регистрация: 21.01.2017
Сообщений: 5
По умолчанию

[QUOTE=Aleksandr H.;1659800]ответы там:
спасибо! посмотрел, но в силу того что не разбираюсь в макросах
я понимаю что нужно применить:
MsgBox ("выход")
End If
но у меня не получается, скорее всего эти команды не связаны моими условиями?
genn931 вне форума Ответить с цитированием
Старый 23.01.2017, 11:53   #6
genn931
 
Регистрация: 21.01.2017
Сообщений: 5
По умолчанию

нашел решение, создал кнопку, и присвоил ей макрос:
Sub Макрос_печати_текущей_страницы()
'
'
For Each iAddress In Array("B2:J32", "B33:J63", "B64:J94", "B95:J125", "B126:J156",)
If Not Intersect(ActiveCell, Range(iAddress)) Is Nothing Then
ActiveSheet.PageSetup.PrintArea = iAddress:

ActiveWindow.SelectedSheets.PrintOu t From:=1, To:=1, Copies:=3

Exit Sub
End If
Next
Exit Sub

End Sub
genn931 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать адрес текущей страницы ChevChelos JavaScript, Ajax 2 10.03.2014 21:16
Быстрая печать записи zander Microsoft Office Access 3 07.05.2013 08:31
Как получить номер текущей страницы документа MS Word при работе через OLE Fastex C++ Builder 1 30.08.2012 19:16
Как из Delphi пустить на печать определенные страницы документа MS Word? Akemi Общие вопросы Delphi 3 01.06.2010 10:48
Как узнать адрес текущей страницы? SuBwooFer JavaScript, Ajax 2 31.08.2009 11:53