[RESUELTO] Macro Para Impr. Y Validar Correcta Carga DeDatos
- MartyMcfly
- Mensajes: 26
- Registrado: Sab Mar 03, 2018 12:20 pm
[RESUELTO] Macro Para Impr. Y Validar Correcta Carga DeDatos
Hola a todos, mi consulta es la siguiente:
tengo un Libro con una Macro que utilizo para imprimir una tabla, la Macro esta asociada a un botón que envia a impresión rápida, y lo que busco es agregarle, a mi código, un chequeo de las celdas con datos, solo necesito que revise que no esten en blanco y recien ahí continue con el comando Print.
Revise en el libro de Mauricio y encontre como especificarle un rango a la hoja activa, y a una sola celda individual y frustadamente no supe integrarlos al mi código.
Los datos en el Libro donde utilizare la Macro van en diversas celdas (unas 10) no en un rango (pj: A1, J3, B9, R5, ect) y estos son seleccionados de una lista deplegable que los toma de una base de datos y los referencia a las celdas donde la macro tendría que "fijarse" que no estan en blanco antes de enviar a imprimir.
Adjunto un Libro de ejemplo con una Tabla con datos y la macro. En el ejemplo lo que necesito es que la macro, antes de enviar a imprimir, valide que las celdas D1, D7, D9, E4 y E7 no esten "vacias" si tienen cualquier dato (fecha, texto, número) continúe con el comando imprimir, sino msgbox "Faltan datos" y hasta que todas esten con datos no imprima. La otra que pense es alguna función que bloquee el botón, pero no puede encontrar manera.
Agredezco la ayuda.
tengo un Libro con una Macro que utilizo para imprimir una tabla, la Macro esta asociada a un botón que envia a impresión rápida, y lo que busco es agregarle, a mi código, un chequeo de las celdas con datos, solo necesito que revise que no esten en blanco y recien ahí continue con el comando Print.
Revise en el libro de Mauricio y encontre como especificarle un rango a la hoja activa, y a una sola celda individual y frustadamente no supe integrarlos al mi código.
Los datos en el Libro donde utilizare la Macro van en diversas celdas (unas 10) no en un rango (pj: A1, J3, B9, R5, ect) y estos son seleccionados de una lista deplegable que los toma de una base de datos y los referencia a las celdas donde la macro tendría que "fijarse" que no estan en blanco antes de enviar a imprimir.
Adjunto un Libro de ejemplo con una Tabla con datos y la macro. En el ejemplo lo que necesito es que la macro, antes de enviar a imprimir, valide que las celdas D1, D7, D9, E4 y E7 no esten "vacias" si tienen cualquier dato (fecha, texto, número) continúe con el comando imprimir, sino msgbox "Faltan datos" y hasta que todas esten con datos no imprima. La otra que pense es alguna función que bloquee el botón, pero no puede encontrar manera.
Agredezco la ayuda.
Última edición por MartyMcfly el Mié Mar 07, 2018 2:50 pm, editado 1 vez en total.
Gracias, saludos
Ariel
OpenOffice 4.1.5 - LibreOffice 6.0.2.1 en Microsoft Windows 10 Pro
Ariel
OpenOffice 4.1.5 - LibreOffice 6.0.2.1 en Microsoft Windows 10 Pro
Re: Macro para imprimir y validar correcta carga de datos
No entiendo porque las celdas D1, D7, D9 , E4 y E7 son las que no deben estar vacías. Esta macro valida solamente esas celdas.
Código: Seleccionar todo
sub CambioDeImpresora
rem codigo de FJCC **************************
oHoja = ThisComponent.Sheets.getByName("Hoja1")
Celdas = Array("D1", "D7", "D9", "E4", "E7")
Producto = 1
For i = 0 to UBOUND(Celdas)
Celda = oHoja.getCellRangeByName(Celdas(i))
Tipo = Celda.Type
If Tipo = com.sun.star.table.CellContentType.EMPTY Then
valor = 0
Else
valor = 1
End If
Producto = Producto * valor
next i
If Producto = 0 Then
MsgBox "Faltan Datos"
Else
rem FJCC ***************************
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Nr"
args1(0).Value = 1
dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
rem ----------------------------------------------------------------------
Dim Doc As Object
Dim PrinterProperties(1) As New com.sun.star.beans.PropertyValue
Dim PaperSize As New com.sun.star.awt.Size
PaperSize.Width = 21000 ' corresponde a 21 cm
PaperSize.Height = 29700 ' corresponde a 29,7 cm
PrinterProperties (0).Name="Name"
PrinterProperties (0).Value="Microsoft XPS Document Writer"
PrinterProperties (1).Name="PaperSize"
PrinterProperties (1).Value=PaperSize
ThisComponent.Printer = PrinterProperties()
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Printer"
args2(0).Value = "Microsoft XPS Document Writer"
dispatcher.executeDispatch(document, ".uno:Printer", "", 0, args2())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PrintDefault", "", 0, Array())
Rem FJCC **************************
End If
end sub
- MartyMcfly
- Mensajes: 26
- Registrado: Sab Mar 03, 2018 12:20 pm
Re: Macro para imprimir y validar correcta carga de datos
FJCC-ES las celdas que mencione eran a modo de ejemplo.
Probe el código que me pasaste y funciona a la perfección, si falta un dato la macro no continúa hasta que dichas celdas esten con datos. Lo que no entendi es donde agregaste "Producto", que función cumple?
Te agradezco desde ya por haberte tomado el tiempo para ayudarme!
Probe el código que me pasaste y funciona a la perfección, si falta un dato la macro no continúa hasta que dichas celdas esten con datos. Lo que no entendi es donde agregaste "Producto", que función cumple?
Te agradezco desde ya por haberte tomado el tiempo para ayudarme!
Gracias, saludos
Ariel
OpenOffice 4.1.5 - LibreOffice 6.0.2.1 en Microsoft Windows 10 Pro
Ariel
OpenOffice 4.1.5 - LibreOffice 6.0.2.1 en Microsoft Windows 10 Pro
Re: [RESUELTO]Macro para impr. y validar correcta carga de d
Las variables Producto y valor controlan el valor de Producto
Producto empieza con el valor 1
En el bucle que empieza con
la macro prueba si cada celda esta vacía, si su propiedad Type = com.sun.star.table.CellContentType.EMPTY. Si no está vacía, la macro asigna 1 a la variable valor y Producto mantiene el valor 1 porque
Si la celda está vacía, valor = 0 y Producto cambia a 0 porque
Una vez que Producto = 0, mantiene ese valor porque el producto de cero con cualquier número es cero. Así que si una celda está vacía o varias están vacías, Producto = 0. Después del bucle, el valor de Producto determina si el código muestra el mensaje “Faltan Datos” o si imprime el documento.
Código: Seleccionar todo
Producto = Producto * valor
Código: Seleccionar todo
Producto = 1
Código: Seleccionar todo
For i = 0 to UBOUND(Celdas)
Código: Seleccionar todo
Producto = Producto * valor = 1 * 1 = 1
Si la celda está vacía, valor = 0 y Producto cambia a 0 porque
Código: Seleccionar todo
Producto = Producto * valor = 1 * 0 = 0
Una vez que Producto = 0, mantiene ese valor porque el producto de cero con cualquier número es cero. Así que si una celda está vacía o varias están vacías, Producto = 0. Después del bucle, el valor de Producto determina si el código muestra el mensaje “Faltan Datos” o si imprime el documento.
- MartyMcfly
- Mensajes: 26
- Registrado: Sab Mar 03, 2018 12:20 pm
Re: [RESUELTO]Macro para impr. y validar correcta carga de d
La verdad que no se que decirte, un lujo la explicación, y seguiren leyendo así trato de preguntar menos o al menos con algo más resuelto. Gracias nuevamente por la paciencia.
Para lo que no me corrio es para una celda donde en dato viene referenciado de un "Campo formateado" donde cargo un valor numérico, por más que en el campo formateado coloque cero, y al cheqeear, en la celda a la que referencia dicho "Campo", que esta vacia, la macro la toma como si tuviera un dato y continúa como si nada. No puedo cambiarlo a "Campo de texto" ya que necesito que el formato del mismo sea si o si con dos decimales.
Despues, Lo único raro es cuando utilice el tu código, para validar celda individuales, en otra macro, el IDE me pidio declarar todas las variables, a lo cual le agregue:
Y salio funcionando perfectamente.
Para lo que no me corrio es para una celda donde en dato viene referenciado de un "Campo formateado" donde cargo un valor numérico, por más que en el campo formateado coloque cero, y al cheqeear, en la celda a la que referencia dicho "Campo", que esta vacia, la macro la toma como si tuviera un dato y continúa como si nada. No puedo cambiarlo a "Campo de texto" ya que necesito que el formato del mismo sea si o si con dos decimales.
Despues, Lo único raro es cuando utilice el tu código, para validar celda individuales, en otra macro, el IDE me pidio declarar todas las variables, a lo cual le agregue:
Código: Seleccionar todo
Dim oHoja as object
Dim Celda as object
Dim Producto as integer
Dim i as integer
Dim Celdas as object
Dim Tipo as integer
Dim Valor as integer
Gracias, saludos
Ariel
OpenOffice 4.1.5 - LibreOffice 6.0.2.1 en Microsoft Windows 10 Pro
Ariel
OpenOffice 4.1.5 - LibreOffice 6.0.2.1 en Microsoft Windows 10 Pro
Re: [RESUELTO]Macro para impr. y validar correcta carga de d
¿Puede subir un archivo que muestra esto?MartyMcfly escribió:Para lo que no me corrio es para una celda donde en dato viene referenciado de un "Campo formateado" donde cargo un valor numérico, por más que en el campo formateado coloque cero, y al cheqeear, en la celda a la que referencia dicho "Campo", que esta vacia, la macro la toma como si tuviera un dato y continúa como si nada.
- MartyMcfly
- Mensajes: 26
- Registrado: Sab Mar 03, 2018 12:20 pm
Re: [RESUELTO]Macro para impr. y validar correcta carga de d
Te adjunto:
Fijate que al colocar un cero lo toma como que no esta vacia, y al no colocar nada #N/D, tambien lo toma como datos. Si lo cambio a "Campo de texto" si, toma la celda como vacia, pero pierdo el formato 0,00.
Fijate que al colocar un cero lo toma como que no esta vacia, y al no colocar nada #N/D, tambien lo toma como datos. Si lo cambio a "Campo de texto" si, toma la celda como vacia, pero pierdo el formato 0,00.
Gracias, saludos
Ariel
OpenOffice 4.1.5 - LibreOffice 6.0.2.1 en Microsoft Windows 10 Pro
Ariel
OpenOffice 4.1.5 - LibreOffice 6.0.2.1 en Microsoft Windows 10 Pro
Re: [RESUELTO]Macro para impr. y validar correcta carga de d
En esta versión del código, las celdas tienen que contener un número (puede ser una fecha) o texto. Si una celda está vacía o si contiene una fórmula el código muestra “Faltan Datos”. La propiedad Type de una celda que muestra #N/D es com.sun.star.table.CellContentType.FORMULA, así que si el “Campo Formateado” está en blanco, el código mostrará “Faltan Datos”.
- Adjuntos
-
- ImprimirDatos_2.ods
- (13.54 KiB) Descargado 186 veces
- MartyMcfly
- Mensajes: 26
- Registrado: Sab Mar 03, 2018 12:20 pm
Re: [RESUELTO] Macro Para Impr. Y Validar Correcta Carga DeD
Excelente!!
Te agredezco la ayuda y las explicaciones que me brindaste, me sirvieron de mucho. Ahora si esta vacia, y muestra el #N/D en la celda ya no permite continuar, si tiene un cero si, pero el tema era que cuando queda vacia no imprima el libro con un campo vacio sin dato.
Te agredezco la ayuda y las explicaciones que me brindaste, me sirvieron de mucho. Ahora si esta vacia, y muestra el #N/D en la celda ya no permite continuar, si tiene un cero si, pero el tema era que cuando queda vacia no imprima el libro con un campo vacio sin dato.
Gracias, saludos
Ariel
OpenOffice 4.1.5 - LibreOffice 6.0.2.1 en Microsoft Windows 10 Pro
Ariel
OpenOffice 4.1.5 - LibreOffice 6.0.2.1 en Microsoft Windows 10 Pro