Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

12 Декабрь 2017, 00:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Часто задаваемые вопросы по LibreOffice и Apache OpenOffice.org
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: нужен макрос для печати  (Прочитано 5104 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ks412
Новичок
*
Offline Offline

Сообщений: 6


« Стартовое сообщение: 23 Февраль 2011, 12:48 »

подскажите макрос. надо наложить его на изображение. при нажатии на картинку выводил на печать текшую страницу или страницу 1.
Записан
mathnew
Новичок
*
Offline Offline

Сообщений: 15


« Ответ #1: 25 Февраль 2011, 10:34 »

Макрос, печатающий некую область на Листе1 при нажатии на картинку.
Пример файла приложен.

Код:
Sub DMCOMP
  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 = 100
  selArea(0).EndRow = 100

  oSheet=ThisComponent.Sheets.getByName("Лист1")
  oSheet.setPrintareas(selArea())
  oDoc.Print(Array())
End Sub

[вложение удалено Администратором]
Записан
mathnew
Новичок
*
Offline Offline

Сообщений: 15


« Ответ #2: 25 Февраль 2011, 11:04 »

В макросе строку
Код:
oSheet=ThisComponent.Sheets.getByName("Лист1")
лучше заменить на
Код:
oSheet=oSheets.getByName("Лист1")

PS. Чтобы повторно не вызывать ThisComponent.
Записан
raptor
Новичок
*
Offline Offline

Сообщений: 45


« Ответ #3: 25 Февраль 2011, 13:26 »

Если область печати не нужно задавать, то макрос может быть таким.
(Добавлено "до кучи" еще количество печатаемых копий.)

Код:
Sub DMCOMP
   Dim args(1) as new com.sun.star.beans.PropertyValue

   oDoc=ThisComponent

   args(0).Name = "CopyCount"         'Количество печатаемых копий активного листа = 2
   args(0).Value = 2

   oDoc.print(args())
End Sub
« Последнее редактирование: 25 Февраль 2011, 14:21 от raptor » Записан
radius
Новичок
*
Offline Offline

Сообщений: 20


« Ответ #4: 2 Май 2011, 09:55 »

(Добавлено "до кучи" еще количество печатаемых копий.)

А как задавать количество копий? Один раз и навсегда вбить в макрос?
Записан
RFJ
Постоялец
***
Offline Offline

Сообщений: 220


« Ответ #5: 2 Май 2011, 10:20 »

Функция InputBox (см Справку).
Записан

tangichhan
Новичок
*
Offline Offline

Сообщений: 3


« Ответ #6: 28 Ноябрь 2017, 19:21 »

Доброго времени, уважаемые знатоки, обращаюсь к вам за помощью.
Имеет два принтера в системе. Один настроен как принтер по умолчанию (Printer 1), второй нет с именем (Printer 2). Имеется документ, который нужно печатать только на Printer 2 и при этом выводить 2 копии.
Нашел ваш код, попробовал изменить по свои нужды, но успеха не добился, что сделал не так?
Код:
Sub DMCOMP
   Dim args(1) as new com.sun.star.beans.PropertyValue

   oDoc=ThisComponent

   args(0).Name = "CopyCount"         'Количество печатаемых копий активного листа = 2
   args(0).Value = 2
   args(1).Name = "Name"
   args(1).Value = "Printer 2"
   oDoc.print(args())
End Sub
Помогите пожалуйста.
Записан
Rafik
Пользователь
**
Offline Offline

Сообщений: 53


« Ответ #7: 29 Ноябрь 2017, 07:12 »

Посмотри тему http://forumooo.ru/index.php/topic,6509.0.html
Она огромная, там, где-то ближе к концу, есть решение как направить документ на принтер, который не стоит по умолчанию. В той же теме есть макрос, позволяющий выбирать, через диалог, печатаемый(е) файл(ы).
Записан
tangichhan
Новичок
*
Offline Offline

Сообщений: 3


« Ответ #8: 30 Ноябрь 2017, 03:07 »

Посмотри тему http://forumooo.ru/index.php/topic,6509.0.html
Она огромная, там, где-то ближе к концу, есть решение как направить документ на принтер, который не стоит по умолчанию. В той же теме есть макрос, позволяющий выбирать, через диалог, печатаемый(е) файл(ы).
Добрый день. данный вариант не подходит для нас, нам не нужен диалог для печати. Нужно просто выполнять команду на печать с определенного принтера и двух копий.
Такое действие может выполнить?
Записан
Rafik
Пользователь
**
Offline Offline

Сообщений: 53


« Ответ #9: 30 Ноябрь 2017, 07:38 »

В процедуре DMCOMP вместо строки oDoc=ThisComponent вставить этот фрагмент
Код:
' Создадим дектоп для открытия печатаемого файла
          Set oDesk = createUnoService("com.sun.star.frame.Desktop")

   ' полное имя файла, который необходимо печатать(путь+название файла с расширением)
' для получения sUrl можно добавить диалог открытия файла
' или перебор файлов в текущей (или какой-либо папке)
 sUrl = "путь\и\имя\файла\для\печати"

 ' Теперь загрузим документ.
 Dim oProps(0) as New com.sun.star.beans.PropertyValue  ' нужен для задания свойств документа
 ' Здесь задается в каком виде (видимый/невидимый) загружается
 oProps(0).Name = "Hidden"
 oProps(0).Value = bHidden 'False - Видимый, True - Скрытый
 oDoc = oDesk.LoadComponentFromUrl(sUrl, "_blank", 63, oProps())
где в строке sUrl = "путь\и\имя\файла\для\печати" указать полное имя файла, который требуется напечатать. Полное имя подразумевает: полный путь, начиная с имени диска(или корня для линукс)+название файла с расширением.

Переделанный макрос разместить в отдельном документе, например "печать файла.odt". В этот же документ вставить кнопку, привязать к ней макрос. Там же через меню "Файл"-"Настройка принтера" указать нужный принтер и "файл"-"сохранить". Документ для печати файла настроен и готов к работе. При повторном открытии этот документ автоматически подцепит тот принтер, на который был настроен при предыдущем использовании.
Записан
Bigor
Новичок
*
Offline Offline

Сообщений: 47


« Ответ #10: 30 Ноябрь 2017, 22:09 »

tangichhan попробуй так
Код:
Sub DMCOMP
   Dim args(1) as new com.sun.star.beans.PropertyValue
   PrintName = "Имя второго принтера в системе"
   oDoc=ThisComponent

   args(0).Name = "CopyCount"         'Количество печатаемых копий активного листа = 2
   args(0).Value = 2
   args(1).Name = "Name"
   args(1).Value = "<" & PrintName & ">"

  oPrinter = oDoc.getPrinter()
  For i = LBound(oPrinter) to UBound(oPrinter)
  If oPrinter(i).Name = "Name" Then
    oPrinter(i).Value = PrintName
  End If
 Next i
 
 oDoc.setPrinter(oPrinter)


   oDoc.print(args())
End Sub

Записан
tangichhan
Новичок
*
Offline Offline

Сообщений: 3


« Ответ #11: 1 Декабрь 2017, 05:02 »

tangichhan попробуй так
Код:
Sub DMCOMP
   Dim args(1) as new com.sun.star.beans.PropertyValue
   PrintName = "Имя второго принтера в системе"
   oDoc=ThisComponent

   args(0).Name = "CopyCount"         'Количество печатаемых копий активного листа = 2
   args(0).Value = 2
   args(1).Name = "Name"
   args(1).Value = "<" & PrintName & ">"

  oPrinter = oDoc.getPrinter()
  For i = LBound(oPrinter) to UBound(oPrinter)
  If oPrinter(i).Name = "Name" Then
    oPrinter(i).Value = PrintName
  End If
 Next i
 
 oDoc.setPrinter(oPrinter)


   oDoc.print(args())
End Sub


Спасибо за помощь. Благодарен. Все замечательно работает
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!