[RESUELTO] Margen distintos pág. derecha e izquierda con VB6

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
Satuple82
Mensajes: 11
Registrado: Jue May 20, 2010 4:09 am

[RESUELTO] Margen distintos pág. derecha e izquierda con VB6

Mensaje por Satuple82 »

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...
Última edición por mauricio el Dom Mar 19, 2017 4:51 pm, editado 2 veces en total.
Razón: Marcar icono de resuelto
OpenOffice 3.1 - Windows XP
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Margenes distintos en página derecha e izquierda con VB6

Mensaje por mauricio »

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
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Satuple82
Mensajes: 11
Registrado: Jue May 20, 2010 4:09 am

Re: Margenes distintos en página derecha e izquierda con VB6

Mensaje por Satuple82 »

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
OpenOffice 3.1 - Windows XP
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Margenes distintos en página derecha e izquierda con VB6

Mensaje por mauricio »

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...

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 Sub
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
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Responder