Здравствуйте! Помогите с решением задачи.
Нужно, по нажатию кнопки на листе запустить макрос, а он в свою очередь выводит диалог печати. Нужно передать параметры в этот самый диалог (количество копий).
Есть следующий код, но он не отрабатывает должным образом (не передает значение). при выводе диалога, количество копий остается неизменным и равно 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"
REM .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
oRanges(0).Sheet = 0
oRanges(0).StartColumn = 0
oRanges(0).StartRow = 0
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 = "Copies"
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
Предыдущая моя тема была опубликована через бот сайта
https://forumooo.ru/index.php/topic,9148.0/msg,62317.html