2017-05-29 165 views
1

我正在用vb6快速创建一个Calc文档。当我打印时,我需要在每页中重复1行和1列。在OpenOffice Calc中以编程方式更改打印区域

这是代码:

Dim mPrintOptions(2) As Object 
Dim OO_Dispatcher As Object 
Set OO_Dispatcher = oServiceManager.createInstance("com.sun.star.frame.DispatchHelper") 
Set mPrintOptions(0) = MakePropertyValue(oServiceManager, "PrintArea", "") 
Set mPrintOptions(1) = MakePropertyValue(oServiceManager, "PrintRepeatRow", "$A$2") 
Set mPrintOptions(2) = MakePropertyValue(oServiceManager, "PrintRepeatCol", "$A$1") 

OO_Dispatcher.executeDispatch oDeskTop, ".uno:ChangePrintArea", "", 0, mPrintOptions 

我有了这个代码保存的文档中作出的宏。

服务管理器和桌面对象先前已实例化。文档创建正常,但是当我将它发送到打印机时,我不重复上面指定的行和列。

回答

0

我发现我的解决方案在这里:

https://wiki.openoffice.org/wiki/ES/Manuales/GuiaAOO/TemasAvanzados/Macros/StarBasic/TrabajandoConCalc/Imprimiendo

我的代码终于得到了这样的:

Dim OO_TitulosR As Object 
Dim OO_ActiveSheet As Object 
Set OO_TitulosR = OO_Document.Bridge_getStruct("com.sun.star.table.CellRangeAddress") 
Set OO_ActiveSheet = OO_Document.getCurrentController.getActiveSheet 
OO_TitulosR.StartColumn = 0 
OO_TitulosR.EndColumn = 0 
OO_TitulosR.StartRow = 1 
OO_TitulosR.EndRow = 1 
OO_ActiveSheet.setTitleColumns OO_TitulosR 
OO_ActiveSheet.setTitleRows OO_TitulosR