Zickname
@Zickname
Амеба

Как добавить событие для запуска макроса в LibreOffice?

Здравствуйте! Есть первая часть скрипта и она прекрасно работает.
Суть: Мне нужно было по кнопке на листе после манипуляций вывести предварительный просмотр.
Attribute VBA_ModuleType=VBAModule
Option VBASupport 1
Sub Кнопка_Печать1()
   Application.ScreenUpdating = 0
   Worksheets("DATA").Unprotect Password:="123321"
   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
     	document   = ThisComponent.CurrentController.Frame
		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())
       		'Application.Wait Time:=Now + TimeValue("0:00:5")
			dispatcher.executeDispatch(document, ".uno:PrintPreview", "", 0, Array())
			end with
			
End Sub


Мне также нужно, чтобы вторая часть кода срабатывала после события "закрытие предварительного просмотра"
62651ac9392d4104392557.png
Attribute VBA_ModuleType=VBAModule
Option VBASupport 1
Sub Main(oEvent as new object)
 a = oEvent.Source
oEvent.Source.getModel()
		'oEvent = dispatcher.executeDispatch(document, ".uno:ClosePrintPreview", "", 0, Array())
		document   = ThisComponent.CurrentController.Frame
		dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	 	dispatcher.executeDispatch(document, ".uno:ClosePrintPreview", "", 0, Array())
				 With Sheets("DATA")
				 Columns("A:G").Hidden = True
				 Range("$i$18").Select
				 end with
       'Code_Libre
  ' endif
   Worksheets("DATA").Protect Password:="123321"
   Application.ScreenUpdating = 1
End Sub


Помогите пожалуйста, как я могу этого добиться?
  • Вопрос задан
  • 40 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы