Подскажите пожалйста, как можно отправить на печать определенные страницы (как в word). Например 1,3,4,6,9 и т.д. Или "только четные" или "нечетные" что то в этом роде. Просто у принтера нет "двухсторонней печати", а печатать по одному листку ОЧЕНЬ долго.
СПАСИБО!!!
Guest
Гость
06.08.2010 14:40:34
макросом
Пользователь
Сообщений: Регистрация: 13.05.2010
06.08.2010 14:42:32
-------------------------------- Attribute VB_Name = "PrintList" Private Sub ПечатьЧНС()
'******************************************************* ' ПечатьЧНС ' Макрос записан 17.01.1998 ' Автор Климов Павел Юрьевич
Количество = 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 --------------------------------
<FONT COLOR="CadetBlue">
Guest
Гость
06.08.2010 17:23:04
Спасибо, только я "чайник" и не смогу сделать макрос, пробовал - не получается.
Может кто поможет, плиз
Пользователь
Сообщений: Регистрация: 16.01.2013
06.08.2010 17:45:30
Так макрос Вам уже предоставили! Необходимо только вставить его в Вашу книгу Excel. Давайте её сюда (не более 100 Kb, Excel 2003)
Здравствуйте!!! А можно как-нибудь без макроса напечатать книгу, в которой содержится 376 листов, при этом надо чтобы шапка первого листа распространялась на все страницы первого листа, второго на все страницы второго и так далее для всех 376 листов.
Пользователь
Сообщений: Регистрация: 21.12.2012
E-mail и реквизиты в профиле.
07.08.2010 09:40:07
Здравствуйте. В 2003 Меню Файл-параметры страницы-Лист-сквозные строки.
Я сам - дурнее всякого примера! ...
Guest
Гость
07.08.2010 11:07:58
Здравствуйте. В 2003 Меню Файл-параметры страницы-Лист-сквозные строк Спасибо. Но этот способ мне не подходит, т.к. когда я выполнила эту процедуру сквозные строки ставятся только для всех страниц 1 листа, а на остальные 375 не распространяется.
Пользователь
Сообщений: Регистрация: 21.12.2012
E-mail и реквизиты в профиле.
07.08.2010 11:40:23
Вы помните свой вопрос? Ладно, уточним: У Вас на всех листах будет одинаковое к-во сквозных строк?
Я сам - дурнее всякого примера! ...
Светлана 777
Гость
07.08.2010 11:51:52
{quote}{login=KuklP}{date=07.08.2010 11:40}{thema=}{post}Вы помните свой вопрос? Ладно, уточним: У Вас на всех листах будет одинаковое к-во сквозных строк?{/post}{/quote}
У меня документ, состоящий из 376 листов. В каждом листе разное количество страниц. Мне нужно одним действие распечать мой документ.НО!!!Когда он распечатался, шапка была только на 1 листе на всех страницах, и то только потому, что я задала печать сквозных строк.Мне нужно чтобы шапка первого листа распечатывалась на всех страницах первого листа, шапка второго листа на всех страницах второго листа...и так на всех 376 листах.Количество сквозных строк одинаковое на всех листах, единственное внутри этой шапки есть объединенные ячейки.
Пользователь
Сообщений: Регистрация: 21.12.2012
E-mail и реквизиты в профиле.
07.08.2010 11:54:11
Вот это выполните один раз: Sub Zag() ' Макрос записан 07.08.2010 (Sergey) Dim Sh As Worksheet For Each Sh In ThisWorkbook.Worksheets With Sh.PageSetup .PrintTitleRows = "$1:$3" ' Сюда подставите номера первой и последней сквозной строки .PrintTitleColumns = "" End With Next End Sub
Я сам - дурнее всякого примера! ...
Guest
Гость
07.08.2010 12:06:03
{quote}{login=KuklP}{date=07.08.2010 11:54}{thema=}{post}Вот это выполните один раз: Sub Zag() ' Макрос записан 07.08.2010 (Sergey) Dim Sh As Worksheet For Each Sh In ThisWorkbook.Worksheets With Sh.PageSetup .PrintTitleRows = "$1:$3" ' Сюда подставите номера первой и последней сквозной строки .PrintTitleColumns = "" End With Next End Sub{/post}{/quote}
По-русски пожалуйста))) А можно как-нибудь без макроса??? Когда я записываю макрос я потом не могу его вызвать на другой документ? в чем дело? И все-таки по-поводу распечатки всех листов, может можно это делать в openoffice?
Модератор
Сообщений: Регистрация: 14.09.2012
Контакты см. в профиле
07.08.2010 12:20:56
"Когда я записываю макрос я потом не могу его вызвать на другой документ?" - это вопрос? "может можно это делать в openoffice?" - с этим вопросом на Форум по Оpenoffice.
Светлана 777
Гость
07.08.2010 12:25:10
{quote}{login=Юрий М}{date=07.08.2010 12:20}{thema=}{post}"Когда я записываю макрос я потом не могу его вызвать на другой документ?" - это вопрос? "может можно это делать в openoffice?" - с этим вопросом на Форум по Оpenoffice.{/post}{/quote}
1) вопрос 2) про openoffice предположение
Пользователь
Сообщений: Регистрация: 21.12.2012
E-mail и реквизиты в профиле.
07.08.2010 12:38:56
Светлана 777, я не понимаю Вас, что куда записывать вызывать? Скопируйте макрос в общий модуль Вашей книги и выполните его один раз. После этого можете его удалить. На всех листах появятся сквозные строки.
Я сам - дурнее всякого примера! ...
Модератор
Сообщений: Регистрация: 14.09.2012
Контакты см. в профиле
07.08.2010 12:54:19
В общем случае макрос сработает для того документа, в котором он записан. Если нужно обработать 2-3 книги - скопируйте этот макрос в каждую. Если Книг много - возможен другой подход: макросом из "отдельной" Книги вызывается нужная, и макрос работает с ней.
Светлана777
Гость
07.08.2010 13:11:11
KuklP Спасибо за ответы.Но я тоже не понимаю Dim Sh As Worksheet For Each Sh In ThisWorkbook.Worksheets With Sh.PageSetup .PrintTitleRows = "$1:$3" ' Сюда подставите номера первой и последней сквозной строки .PrintTitleColumns = "" End With Next End Sub ЭТО ЧТО??? КУДА ЭТО ВСЕ ПИСАТЬ??? а мои листы как не печатались, так наверное и не распечатаются НИКОГДА!!! Простите конечно, но я очень далека от программирования и пишу вам своим простым обывательским языком. А от того что вы не понимаете меня, я злюсь еще больше. Я в отчаянии. Для Юрия М принцип работы макроса я знаю, я не могу его вызвать на другой документ сочетанием клавиш, не получается.
Модератор
Сообщений: Регистрация: 14.09.2012
Контакты см. в профиле
07.08.2010 13:22:41
Я вижу, что Сергея сейчас нет в Сети... Светлана, в Вашей Книге нажимаем Alt+F11. Откроется окно редактора. Insert - Module. Появится пустой модуль. Скопируйте в него текст, который предложил Сергей. Запустите этот макрос
Guest
Гость
07.08.2010 13:25:51
Спасибо, Сергей, Юрий в понедельник вечером напишу результат, сейчас просто уже сил нет всем этим заниматься!!!
Пользователь
Сообщений: Регистрация: 15.09.2012
02.01.2012 20:46:54
На первой странице - инструкция. На страницах правее - таблица: ширина - 3 листа, длина таблицы (количество листов) зависит от количества внесенных данных.
Чтобы не печатать пустые страницы (под инструкцией), нарисовал такое: Sub Print_() Dim n As Long, i As Long Application.ScreenUpdating = False With Worksheets("tabl") .Activate .PrintOut From:=1, To:=1 n = ExecuteExcel4Macro("GET.DOCUMENT(50)") i = n / 4 + 1 .PrintOut From:=i, To:=n End With Worksheets("кнопка").Activate Application.ScreenUpdating = True End Sub
Печатается первый лист и все листы таблицы. Есть другие варианты определения числа страниц? Можно процедуру организовать проще?
Sub Print_() With Worksheets("tabl") .PrintOut From:=1, To:=1 .PrintOut From:=.HPageBreaks.Count + 2 End With End Sub
.HPageBreaks.Count - число горизонтальных разрывов страниц. Соответственно, страниц по вертикали .HPageBreaks.Count+1, а номер первой страницы во втором столбце страниц .HPageBreaks.Count + 2. Если параметр To: не указан, печать идет до последней страницы.