И снова про печать

Автор Alsagar, 26 сентября 2012, 02:43

0 Пользователи и 1 гость просматривают эту тему.

Alsagar

Доброе время суток уважаемые.
Перелопатив форум так и не смог разобраться с макросами для печати,вернее печати с заданными параметрами........
Чтоб не запутывать сумбурным текстом изложения своих мыслей,напишу что хочется сделать.....
Есть книга,в ней три листа(первые два листа с данными),на третьем листе кнопка или картинка с привязанным макросом,при нажатие на которую происходит действия которые обычно выполняются при выведение "предварительного просмотра"
1- ориентация страницы выставляется альбомная
2- изменение масштаба(или по процентам уменьшение до 50%,или изменения режима масштабирования к значению "Подогнать диапазон к высоте.ширине"(второе лучше))
3-печатать только вторую страницу на единственном в системе принтере

ЗЫ calc из пакета 3.4.1

Alsagar

#1
Ну похоже выкрутился........
спасли вот эти строки

oPageStyle = ThisComponent.StyleFamilies.getByName("PageStyles").getByName("Default")
oPageStyle.ScaleToPagesX = 1
oPageStyle.ScaleToPagesY = 1


Теперь лист становится в область печати

ну а совмещение  с кодом из темы http://community.i-rs.ru/index.php/topic,16977.0.html
дало положительный эффект.......но к сожалению стабильной работы макроса с неактивного листа добиться не получилось,в связи с известной проблемой
ЦитироватьПроверьте настройки принтера.


1. Печать - Печать - Все листы (Должно быть отмечено !!!)

2. Параметры печати - Листы - Печатать только выбранные листы (НЕ должно быть отмечено)
каждый раз приходится выставлять по новой.....
Решил упростить задачу.......
кнопку поставил с макросом на том листе который нужно распечатать
взял другой код и совместил с выше приведенным
получилSub PRINT_tab
oPageStyle = ThisComponent.StyleFamilies.getByName("PageStyles").getByName("Default")
oPageStyle.ScaleToPagesX = 1
oPageStyle.ScaleToPagesY = 1


  Dim selArea(0) as new com.sun.star.table.CellRangeAddress

  oDoc = Thiscomponent
  oSheets = ThisComponent.Sheets

' Печать с выбором области печати на листе
'nStC=0 ' начальная колонка
'nStR=0 ' начальная строка
'nEndC=10 ' конечная колонка
'nEndR=20 ' конечная строка

  selArea(0).StartColumn = 0
  selArea(0).StartRow = 0
  selArea(0).EndColumn = 23
  selArea(0).EndRow = 25
 
  Dim PrintProperties(1) as new com.sun.star.beans.PropertyValue

PrintProperties(1).Name = "PaperOrientation"
PrintProperties(1).Value = 1 'com.sun.star.view.PaperOrientation.LANDSCAPE
oDoc.setPrinter(PrintProperties())

  oSheet=ThisComponent.Sheets.getByName("СТАТИСТИКА")
  oSheet.setPrintareas(selArea())
  oDoc.Print(Array())
End Sub

Прекрасно понимаю что наворотил лишнего,так как фактически ничего не понимаю в программирование......но как ни странно все работает как хотел......то есть-лист в области печати,ориентация страницы альбомная......
но может кто поможет причесать код дилетанту.......привести к тому виду как должно быть.....
спасибо