Подскажите пожалйста, как можно отправить на печать определенные страницы (как в word). Например 1,3,4,6,9 и т.д. Или "только четные" или "нечетные" что то в этом роде. Просто у принтера нет "двухсторонней печати", а печатать по одному листку ОЧЕНЬ долго.
Количество = 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
Здравствуйте!!! А можно как-нибудь без макроса напечатать книгу, в которой содержится 376 листов, при этом надо чтобы шапка первого листа распространялась на все страницы первого листа, второго на все страницы второго и так далее для всех 376 листов.
Здравствуйте. В 2003 Меню Файл-параметры страницы-Лист-сквозные строк Спасибо. Но этот способ мне не подходит, т.к. когда я выполнила эту процедуру сквозные строки ставятся только для всех страниц 1 листа, а на остальные 375 не распространяется.
{quote}{login=KuklP}{date=07.08.2010 11:40}{thema=}{post}Вы помните свой вопрос? Ладно, уточним: У Вас на всех листах будет одинаковое к-во сквозных строк?{/post}{/quote}
У меня документ, состоящий из 376 листов. В каждом листе разное количество страниц. Мне нужно одним действие распечать мой документ.НО!!!Когда он распечатался, шапка была только на 1 листе на всех страницах, и то только потому, что я задала печать сквозных строк.Мне нужно чтобы шапка первого листа распечатывалась на всех страницах первого листа, шапка второго листа на всех страницах второго листа...и так на всех 376 листах.Количество сквозных строк одинаковое на всех листах, единственное внутри этой шапки есть объединенные ячейки.
Вот это выполните один раз: 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
{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?
"Когда я записываю макрос я потом не могу его вызвать на другой документ?" - это вопрос? "может можно это делать в openoffice?" - с этим вопросом на Форум по Оpenoffice.
{quote}{login=Юрий М}{date=07.08.2010 12:20}{thema=}{post}"Когда я записываю макрос я потом не могу его вызвать на другой документ?" - это вопрос? "может можно это делать в openoffice?" - с этим вопросом на Форум по Оpenoffice.{/post}{/quote}
Светлана 777, я не понимаю Вас, что куда записывать вызывать? Скопируйте макрос в общий модуль Вашей книги и выполните его один раз. После этого можете его удалить. На всех листах появятся сквозные строки.
В общем случае макрос сработает для того документа, в котором он записан. Если нужно обработать 2-3 книги - скопируйте этот макрос в каждую. Если Книг много - возможен другой подход: макросом из "отдельной" Книги вызывается нужная, и макрос работает с ней.
KuklP Спасибо за ответы.Но я тоже не понимаю Dim Sh As Worksheet For Each Sh In ThisWorkbook.Worksheets With Sh.PageSetup .PrintTitleRows = "$1:$3" ' Сюда подставите номера первой и последней сквозной строки .PrintTitleColumns = "" End With Next End Sub ЭТО ЧТО??? КУДА ЭТО ВСЕ ПИСАТЬ??? а мои листы как не печатались, так наверное и не распечатаются НИКОГДА!!! Простите конечно, но я очень далека от программирования и пишу вам своим простым обывательским языком. А от того что вы не понимаете меня, я злюсь еще больше. Я в отчаянии. Для Юрия М принцип работы макроса я знаю, я не могу его вызвать на другой документ сочетанием клавиш, не получается.
Я вижу, что Сергея сейчас нет в Сети... Светлана, в Вашей Книге нажимаем Alt+F11. Откроется окно редактора. Insert - Module. Появится пустой модуль. Скопируйте в него текст, который предложил Сергей. Запустите этот макрос
На первой странице - инструкция. На страницах правее - таблица: ширина - 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: не указан, печать идет до последней страницы.