Hola a todos.... mi inquietud es saber como doy márgenes a un documento, pero sabiendo que las páginas impares tienen diferentes margenes a las páginas pares...
Yo manejo Visual Basic 6.0 y OpenOffice 3.2.1rc.
Falta involucrar estas funciones y no se como hacerlo.
com.sun.star.style.PageStyleLayout.LEFT y com.sun.star.style.PageStyleLayout.RIGHT
Tengo el siguiente código...
Private Sub Command1_Click()
'Variables para los objetos
Dim oSM, oDesk, oDoc As Object
Dim arg()
Dim oStyle As Object
Dim oEstilos As Object
Dim oDocActivo As Object
Dim oEstilosPagina As Object
Dim sEstilo As String
Dim oViewCursor As Object
' Dim PageStyle As Object
Dim oPageStyleName As String
Dim oPageStyles As Object
Dim oVCurs As Object
'Obejto para manejador de OO
Set oSM = CreateObject("com.sun.star.ServiceManager")
'Instancia al objeto para manejar el Documetno
Set oDesk = oSM.createInstance("com.sun.star.frame.Desktop")
'Cargamos la plantilla en blanco...
'Observar que a partir de la plantilla expediente.ott se va a generar el documento
Set oDoc = oDesk.loadComponentFromURL("file:///C:/EXPEDIENTE.ott", "_blank", 0, arg())
'Para dar margenes a un Documento funciona
Set oVCurs = oDoc.CurrentController.getViewCursor()
oPageStyleName = oVCurs.PageStyleName
Set oPageStyles = oDoc.StyleFamilies.getByName("PageStyles")
Set oStyle = oPageStyles.getByName(oPageStyleName)
Rem fromleft, fromtop, fromright, frombottom = whatever you want
oStyle.LeftMargin = 4500
oStyle.TopMargin = 1500
oStyle.RightMargin = 1500
oStyle.BottomMargin = 3500
'Aqui cambio el tamaño del Papel Funciona
If oStyle.Width = 27940 Then
oStyle.Width = 21000
oStyle.Height = 29700
Else
oStyle.Width = 15000
oStyle.Height = 27940
End If
' .PageStyleLayout... aqui está el problema... página derecha y página izquierda ????
...
.
.
.
End sub
Agradezco su colaboración...
[RESUELTO] Margen distintos pág. derecha e izquierda con VB6
[RESUELTO] Margen distintos pág. derecha e izquierda con VB6
Última edición por mauricio el Dom Mar 19, 2017 4:51 pm, editado 2 veces en total.
Razón: Marcar icono de resuelto
Razón: Marcar icono de resuelto
OpenOffice 3.1 - Windows XP
Re: Margenes distintos en página derecha e izquierda con VB6
Hola...
Compañero, si cargas el documento de una plantllla, ¿por que no tener ya configurado todo lo que necesites en la plantilla?, así, solo hacemos cambios menores desde código...
Saludos
Compañero, si cargas el documento de una plantllla, ¿por que no tener ya configurado todo lo que necesites en la plantilla?, así, solo hacemos cambios menores desde código...
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Margenes distintos en página derecha e izquierda con VB6
Mauricio... lo que pasa es que en el sistema que está funcionando el programa, coge diversos documentos y no todos trabajan con la misma plantilla... el programa está en red y es multiusuario.. por lo tanto se requiere que para minimizar los errores de impresión (Humanos)... el programa sea el que identificando el tipo de documento... sea por código que se le asignen las margenes, tipo de papel, etc...
Gracias
Gracias
OpenOffice 3.1 - Windows XP
Re: Margenes distintos en página derecha e izquierda con VB6
Hola...
La siguiente macro hace lo que quieres, por favor, primero pruebala directamente en un archivo nuevo de Writer, después, solo te resta adaptarla para llamarla desde VB6...
Por favor, si esto responde tu pregunta, edita el primer mensaje de este hilo y agrega al principio del título la etiqueta [RESUELTO], de esta forma conseguiremos un foro más ordenado.
Saludos
La siguiente macro hace lo que quieres, por favor, primero pruebala directamente en un archivo nuevo de Writer, después, solo te resta adaptarla para llamarla desde VB6...
Código: Seleccionar todo
Option Explicit
Sub Margenes()
Dim oDoc As Object
Dim oTexto As Object
Dim oCursor As Object
Dim oEstilosPagina As Object
Dim oEstiloIzquierda As Object
Dim oEstiloDerecha As Object
'Este documento
oDoc = ThisComponent
'Los estilos de página
oEstilosPagina = oDoc.getStyleFamilies.getByName( "PageStyles" )
'Estilo de página derecha e izquierda
oEstiloIzquierda = oEstilosPagina.getByName( "Left Page" )
oEstiloDerecha = oEstilosPagina.getByName( "Right Page" )
'Margenes para la izquierda
With oEstiloIzquierda
.LeftMargin = 2000
.RightMargin = 2000
.TopMargin = 4000
.BottomMargin = 4000
End With
'Para la derecha
With oEstiloDerecha
.LeftMargin = 4000
.RightMargin = 4000
.TopMargin = 2000
.BottomMargin = 2000
End With
'El texto
oTexto = oDoc.getText()
'Un cursor
oCursor = oTexto.createTextCursor()
'Aplicamos el estilo de página izquierda
oCursor.PageDescName = "Left Page"
'Insertamos un salto de página
oCursor.BreakType = com.sun.star.style.BreakType.PAGE_AFTER
'Insertamos un salto de parrafo, necesario para ver la nueva hoja
oTexto.insertControlCharacter( oCursor, com.sun.star.text.ControlCharacter.PARAGRAPH_BREAK, False)
'Aplicamos el estulo de página derecha a la nueva hoja
oCursor.PageDescName = "Right Page"
End SubSaludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro