Documentos de Académico
Documentos de Profesional
Documentos de Cultura
levemente adaptadas.
Encabezado de la factura
Para los datos de la empresa que factura hemos utilizada Ctrl+Intro en modo edición para
insertar varias líneas en la celda, y hemos aplicado diferentes propiedades a los texto siguiendo
el sistema comentado en este artículo: Aplicar varios formatos al texto de una celda en Calc.
Numerador de factura
Símplemente se ha añadido desde la barra de herramientas Campos de control de
formulario (podemos mostrarla desde el menú Ver > Barras de herramientas) un Botón de
selección; en modo diseño de formulario (segundo botón de la barra de herramientas) editamos
las propiedades del Control (tercer botón de la barra de herramientas con el control
seleccionado); desde la ficha Datos lo hemos relacionado con la celda C3. Desde la
ficha General hemos definido el valor máximo en 10.000.000.
Pié de la factura
El primer vencimiento se calcula restando del total los otros vencimientos, de forma que en caso
de diferencias por redondeo, se acumulen o resten del primero.
Hoja protegida
Se ha protegido la hoja para que no se puedan siquiera seleccionar las celdas que no tienen que
editarse.
Las celdas que sí pueden editarse fueron previamente desprotegidas desde Formatear celdas...
> Protección de celda, como podeis leer en este capítulo de nuestra wiki: Ocultar, mostrar y
proteger en Calc.
En caso de personalizar la factura, y tener que mover estas celdas o rangos de celdas de lugar, o
cambiar el número de líneas o columnas que conforman alguno de los rangos, se deben redefinir
los nombres para no tener que modificar las macros y que todo siga funcionando correctamente.
Para saber más sobre rangos y celdas con nombre, consulta Definir rangos o celdas con nombre.
Exportar los datos a la hoja Resumen
La macro que realiza este proceso se llama EnviarDatos, y está asociada al primer botón Enviar
datos a Resumen.
Los datos que se quieren exportar a la hoja resumen han sido duplicados mediante vínculos al
nombre DatosFactura(rango K7:K28) en una columna para simplificar el proceso que realiza la
macro. La macro copia estos datos y mediante pegado especial, transponiendo, pegar los datos
en la hora Resumen en forma de fila.
Las columnas J y K se han ocultado a propósito.
En la exportación se utiliza el nombre ResumenInsertarFila para localizar la posición donde
insertar la nueva fila.
Se utiliza el nombre CodCliente para volver de nuevo a la hoja Factura tras exportar los datos a
la hoja Resumen.
Sub EnviarDatos
'----------------------------------------------------------------------
document = ThisComponent.CurrentController.Frame
dispatcher = CreateUNOService("com.sun.star.frame.DispatchHelper")
aSaltarA(0).Name = "ToPoint"
aSaltarA(0).Value = "DatosFactura"
aMover(0).Name = "By"
aMover(0).Value = 1
aMover(1).Name = "Sel"
aMover(1).Value = False
aPegadoEspecial(0).Name = "Flags"
aPegadoEspecial(0).Value = "SVDN"
aPegadoEspecial(1).Name = "FormulaCommand"
aPegadoEspecial(1).Value = 0
aPegadoEspecial(2).Name = "SkipEmptyCells"
aPegadoEspecial(2).Value = False
aPegadoEspecial(3).Name = "Transpose"
aPegadoEspecial(3).Value = True
aPegadoEspecial(4).Name = "AsLink"
aPegadoEspecial(4).Value = False
aPegadoEspecial(5).Name = "MoveMode"
aPegadoEspecial(5).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0,
aPegadoEspecial())
aMover(0).Value = 22
aMover(0).Value = 1
aMover(1).Value = True
aMover(1).Value = False
aPegadoEspecial(0).Value = "A"
aPegadoEspecial(3).Value = False
aSaltarA(0).Value = "CodCliente"
End Sub
Imprimir la factura
La macro que realiza este proceso se llama ImprimirFactura, y está asociada al primer
botón Imprimir Factura.
Se utiliza el nombre ImprimirFactura para definir el área de impresión, o sea, las celdas a
imprimir.
Se utiliza el nombre CodCliente para situar el cursor en esa posición tras definir el área de
impresión.
La macro redefine el área de impresión y muestra el diálogo Imprimir para seleccionar la
impresora de salida y otros ajustes.
Si se desea que se presente el diálogo Formato de página (disponible desde la vista preliminar
para ajustar las opciones de página, encabezado, etc.) puedes descomentar la línea
correspondiente en la macro.
Sub ImprimirFactura
'----------------------------------------------------------------------
dispatcher = CreateUNOService("com.sun.star.frame.DispatchHelper")
aSaltarA(0).Name = "ToPoint"
aSaltarA(0).Value = "ImprimirFactura"
aSaltarA(0).Value = "CodCliente"
End Sub
Generar PDF
La macro que realiza este proceso se llama GenerarPDF, y está asociada al primer
botón Generar PDF.
Se utiliza el nombre ImprimirFactura para definir el área de impresión y el
nombre CodCliente para situar el cursor en esa posición tras definirla.
Se utiliza el nombre NumFactura para componer el nombre del documento PDF generado.
Sub GenerarPDF
'----------------------------------------------------------------------
document = ThisComponent.CurrentController.Frame
dispatcher = CreateUNOService("com.sun.star.frame.DispatchHelper")
aSaltarA(0).Name = "ToPoint"
aSaltarA(0).Value = "ImprimirFactura"
aSaltarA(0).Value = "CodCliente"
numFactura =
ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("NumFactura
").getString()
args2(0).Name = "URL"
args2(0).Value = CarpetaNombrePDF
args2(1).Name = "FilterName"
args2(1).Value = "calc_pdf_Export"
EndIf
End Sub
Function GuardarComo( cNombre As String ) As String
'----------------------------------------------------------------------
Dim mDlgOpciones()
Dim mOpciones()
oDlgGuardarArchivo = CreateUNOService
("com.sun.star.ui.dialogs.FilePicker")
mDlgOpciones =
Array(com.sun.star.ui.dialogs.TemplateDescription.FILESAVE_AUTOEXTENSION)
With oDlgGuardarArchivo
.Initialize ( mDlgOpciones() )
.SetDefaultName(cNombre)
End With
If oDlgGuardarArchivo.Execute() Then
mArchivo() = oDlgGuardarArchivo.getFiles()
GuardarComo = mArchivo(0)
End If
End Function
Vaciar datos
La macro que realiza este proceso se llama VaciarDatos, y está asociada al primer botón Vaciar
datos.
Se utilizan varias nombres de celdas y de rangos para reiniciar los datos de la factura..
Tras utilizar este botón, las celdas afectadas se mostrará vacías de contenidos, incluídos los
comentarios que albergaban.
Sub VaciarDatos
'----------------------------------------------------------------------
document = ThisComponent.CurrentController.Frame
dispatcher = CreateUNOService("com.sun.star.frame.DispatchHelper")
aSaltarA(0).Name = "ToPoint"
aSaltarA(0).Value = "VaciaCodigos"
aSaltarA(0).Value = "VaciaDtos"
aSaltarA(0).Value = "FormaPago"
aSaltarA(0).Value = "Portes"
aSaltarA(0).Value = "DescuentoFact"
aSaltarA(0).Value = "CodCliente"
End Sub
Hoja Factura
Desde la barra de herramientas lateral se ha desactivado la opción Mostrar líneas de
cuadrícula de la celda.
Hoja Datos
Para que el método de selección de un dato utilizando la técnica de Validez sea más natural, es
importante dejar la primera celda del rango vacía.
En las funciones BUSCARV utilizadas en la hoja Factura, las tablas de búsqueda incluyen hasta la
fila 50; se ha marcado de forma especial la última fila para recordar que en caso de necesitar
más líneas, deben insertarse por encima de esa marca, con el fin de que las fórmulas se
actualicen automáticamente.
Hoja Resumen
Las dos primeras y las dos últimas filas que se ven en la hoja no deben eliminarse para que todo
funcione perfectamente.
Cuando se insertan nuevas filas se copia automáticamente el formato de las filas anteriores;
además, las celdas de las columnas W y X contienen fórmulas que automáticamente copia la
macro de la fila anterior a la insertada. Por eso no debemos eliminar ni la fila 2, ni el contenido,
ni el formato de sus celdas.
Para que se actualicen automáticamente las fórmulas de las dos últimas filas (los totales) debe
respetarse la fila situada justo encima, que no debe eliminarse ni ocultarse.