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

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

15 Август 2022, 05:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Доступно и просто о работе в офисных пакетах
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: LibreOffice свойства диалога печати diaolog print  (Прочитано 972 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ForumOOo (бот)

Offline Offline

Сообщений: 819


« Ответ #62317: 28 Апрель 2022, 06:25 »

Компонент: Basic
Версия продукта: 7.x
Сборка: LibreOffice
ОС: Windows

Здравствуйте! Помогите с решением задачи.
Нужно, по нажатию кнопки на листе запустить макрос, а он в свою очередь выводит диалог печати. Нужно передать параметры в этот самый диалог (количество копий).
Есть следующий код, но он не отрабатывает должным образом (не передает значение). при выводе диалога, количество копий остается неизменным и равно 1.

Attribute VBA_ModuleType=VBAModule
Option VBASupport 1
Sub Кнопка_Печать1()
   Application.ScreenUpdating = 0
   Worksheets("DATA").Unprotect Password:="123321"
   document   = ThisComponent.CurrentController.Frame
   dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
   With Sheets("DATA")
   Range("$A$1:$G$35").Select
   Columns("A:G").Hidden = False
   Worksheets("DATA").Range("$B$11:$B$27").WrapText = True
   Worksheets("DATA").Range("$C$23:$C$27").WrapText = True
       .PageSetup.PrintArea = "$A$1:$G$35"
     ' .Application.Dialogs(xlDialogPrint).Show , , , 2
       
       'Code_Libre
      'dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

      rem ----------------------------------------------------------------------
      Dim oRanges(0) As New com.sun.star.table.CellRangeAddress
      ' Устанавливаем лист печати (Лист1)
         oRanges(0).Sheet = 0
      ' Устанавливаем первую ячейку первого диапазона (A1)
         oRanges(0).StartColumn = 0
         oRanges(0).StartRow = 0
      ' Устанавливаем последнюю ячейку первого диапазона (D5)
         oRanges(0).EndColumn = 7
         oRanges(0).EndRow = 35
         ' Выбираем указанные диапазоны
         ThisComponent.CurrentController.getActiveSheet().setPrintAreas(oRanges())
         'Dim Args(0) as new com.sun.star.beans.PropertyValue
         dim args2(0) as new com.sun.star.beans.PropertyValue
            args2(0).Name = "CopyCount"
            args2(0).Value = 2
            
            dispatcher.executeDispatch(document, ".uno:Print", "", 0, args2())
         'Code+_Libre
         Wait 200
         Columns("A:G").Hidden = True
             Range("$i$18").Select
             end with
              Worksheets("DATA").Protect Password:="123321"
   Application.ScreenUpdating = 1
End Sub

Тестовый файл: http://forumooo.ru/attachments/upload/snimok_ekrana_2022-04-28_0919207.png (47.91 КБ)

--
Подпись: zickname
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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