[RESUELTO] Macro para sobrescribir datos con formulario
[RESUELTO] Macro para sobrescribir datos con formulario
Hola a todos,
hace poco escribí otra duda la cual fue resuelta, pero conforme voy avanzando en el proyecto que estoy haciendo me asaltan más dudas, y algunas no puedo darles solución yo mismo. He buscado por el foro y por Google a ver si había algo similar pero no lo he encontrado, en el caso de que lo hubiese pido disculpas por abrir este tema.
La cuestión es la siguiente: al pulsar un botón en una hoja de calc, debe aparecer un formulario, en primer lugar que haya una casilla de check para poder guardar los cambios y rellenar los datos a introducir que serían Operario, Fecha Realización, Fecha Próxima (es decir, activar esas opciones; si no está marcado el check, no se puede hacer nada).
Una vez que se introducen esos datos y le doy a Guardar y salir, esos datos deben sobrescribir a unos que ya había antes en otra hoja, en unas celdas concretas (por ejemplo la B3, B4 y B5 respectivamente, para que así al realizar el formulario de otra hoja, sobrescriba en las celdas C3, C4 y C5 por ejemplo).
Quizás no quede clara mi duda, si es así decidme que necesitáis para poder ayudarme.
Mil gracias a todos. Saludos!!
hace poco escribí otra duda la cual fue resuelta, pero conforme voy avanzando en el proyecto que estoy haciendo me asaltan más dudas, y algunas no puedo darles solución yo mismo. He buscado por el foro y por Google a ver si había algo similar pero no lo he encontrado, en el caso de que lo hubiese pido disculpas por abrir este tema.
La cuestión es la siguiente: al pulsar un botón en una hoja de calc, debe aparecer un formulario, en primer lugar que haya una casilla de check para poder guardar los cambios y rellenar los datos a introducir que serían Operario, Fecha Realización, Fecha Próxima (es decir, activar esas opciones; si no está marcado el check, no se puede hacer nada).
Una vez que se introducen esos datos y le doy a Guardar y salir, esos datos deben sobrescribir a unos que ya había antes en otra hoja, en unas celdas concretas (por ejemplo la B3, B4 y B5 respectivamente, para que así al realizar el formulario de otra hoja, sobrescriba en las celdas C3, C4 y C5 por ejemplo).
Quizás no quede clara mi duda, si es así decidme que necesitáis para poder ayudarme.
Mil gracias a todos. Saludos!!
Última edición por ivanbr3 el Sab May 09, 2020 3:54 pm, editado 5 veces en total.
OpenOffice 4.1.7 en Windows 10
- PepeOooSevilla
- Mensajes: 1480
- Registrado: Sab Abr 04, 2009 6:10 pm
- Ubicación: Sevilla (España)
Re: Macro para sobrescribir datos con formulario
Hola.
Además en las páginas Manuales de Apache OpenOffice en español: Basic y, Basic OpenOffice: Apache OpenOffice Basic en español de nuestro compañero SLV-es, encontrarás muy buena información.
Dicho esto, creo que deberías concretar mucho más tu consulta para recibir respuestas más ajustadas a tu necesidad y, a ser posible, deberías subir un archivo de ejemplo. Si no sabes cómo subir un archivo, consulta Cómo adjuntar un archivo.
Saludos cordiales.
- Para construir un edificio debes empezar por construir unos buenos cimientos ...
Además en las páginas Manuales de Apache OpenOffice en español: Basic y, Basic OpenOffice: Apache OpenOffice Basic en español de nuestro compañero SLV-es, encontrarás muy buena información.
Dicho esto, creo que deberías concretar mucho más tu consulta para recibir respuestas más ajustadas a tu necesidad y, a ser posible, deberías subir un archivo de ejemplo. Si no sabes cómo subir un archivo, consulta Cómo adjuntar un archivo.
Saludos cordiales.
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Re: Macro para sobrescribir datos con formulario
Adjunto un archivo con lo que estoy intentando hacer, explico un poco mejor...
En el archivo tenemos 5 hojas (MENU, LISTADO, SIST. ELECT., CONTRAINC., OFIC.)
Desde la hoja MENU tenemos botones que nos llevan hasta las otras hojas, hasta ahí todo bien.
En las hojas SIST. ELECT., CONTRAINC. y OFIC. quiero que haya un botón (de cada instalación dentro de esas zonas) que me abra un formulario para poder introducir datos (en el ejemplo solo está hecho en la hoja de SIST. ELECT.).
En la hoja LISTADO nos aparece una lista con todas las instalaciones que hay y diferentes datos del mantenimiento a realizar.
El problema es el siguiente: una vez hago click en el botón del formulario en SIST. ELECT. (alguno de los 3 que hay: CT1, CT2 o GE), se abre el diálogo correspondiente y me pide que introduzca 3 datos (Quién, Tipo y Próxima Fecha). Lo que necesito es que si por ejemplo abro CT1 e introduzco los datos correspondientes, al darle a guardar y salir, que esos datos los sustituya por los que ya había en la hoja LISTADO en la misma posición. Lo mismo si lo hago con CT2 o GE o cualquiera de los demás que introduzca.
Además, también necesitaría modificar la macro para que:
1) al darle al botón de Guardar y Salir, se cerrase el formulario y no tuviese que darle a cancelar.
2) si veis al abrir el diálogo (formulario), arriba aparece una casilla de Check, me gustaría que no se pudiesen introducir datos ni guardarlos si esa casilla no está marcada.
Gracias por la ayuda!!!!
En el archivo tenemos 5 hojas (MENU, LISTADO, SIST. ELECT., CONTRAINC., OFIC.)
Desde la hoja MENU tenemos botones que nos llevan hasta las otras hojas, hasta ahí todo bien.
En las hojas SIST. ELECT., CONTRAINC. y OFIC. quiero que haya un botón (de cada instalación dentro de esas zonas) que me abra un formulario para poder introducir datos (en el ejemplo solo está hecho en la hoja de SIST. ELECT.).
En la hoja LISTADO nos aparece una lista con todas las instalaciones que hay y diferentes datos del mantenimiento a realizar.
El problema es el siguiente: una vez hago click en el botón del formulario en SIST. ELECT. (alguno de los 3 que hay: CT1, CT2 o GE), se abre el diálogo correspondiente y me pide que introduzca 3 datos (Quién, Tipo y Próxima Fecha). Lo que necesito es que si por ejemplo abro CT1 e introduzco los datos correspondientes, al darle a guardar y salir, que esos datos los sustituya por los que ya había en la hoja LISTADO en la misma posición. Lo mismo si lo hago con CT2 o GE o cualquiera de los demás que introduzca.
Además, también necesitaría modificar la macro para que:
1) al darle al botón de Guardar y Salir, se cerrase el formulario y no tuviese que darle a cancelar.
2) si veis al abrir el diálogo (formulario), arriba aparece una casilla de Check, me gustaría que no se pudiesen introducir datos ni guardarlos si esa casilla no está marcada.
Gracias por la ayuda!!!!
- Adjuntos
-
- EJEMPLO.ods
- (17.98 KiB) Descargado 235 veces
OpenOffice 4.1.7 en Windows 10
- gustavodiaz00
- Mensajes: 64
- Registrado: Mié Abr 26, 2017 1:29 am
- Ubicación: Argentina, San Nicolás de los Arroyos
Re: Macro para sobrescribir datos con formulario
Hola te devuelvo el archivo con algunas correcciones espero que te sirvan.
LibreOffice 6.1 en KDE Neon
Re: Macro para sobrescribir datos con formulario
Hola, gracias por responder y por la ayuda.
Esta muy bien, lo único que al guardar la fecha se guarda en fecha realizada (debería guardarse en fecha programada y haber otra casilla en el formulario que pusiese Fecha Realización y esa si iría ahí, se me olvidó comentarlo con anterioridad), y que al guardar la fecha aparece una comilla ( ' ) delante y no lo lee como fecha.
¿Se podría solucionar eso?
Muchisimas gracias compañeros.
Esta muy bien, lo único que al guardar la fecha se guarda en fecha realizada (debería guardarse en fecha programada y haber otra casilla en el formulario que pusiese Fecha Realización y esa si iría ahí, se me olvidó comentarlo con anterioridad), y que al guardar la fecha aparece una comilla ( ' ) delante y no lo lee como fecha.
¿Se podría solucionar eso?
Muchisimas gracias compañeros.
OpenOffice 4.1.7 en Windows 10
- gustavodiaz00
- Mensajes: 64
- Registrado: Mié Abr 26, 2017 1:29 am
- Ubicación: Argentina, San Nicolás de los Arroyos
Re: Macro para sobrescribir datos con formulario
Hola con respecto a donde se guarda la fecha es muy sencillo en
La fecha de realización no la podes guardar en el mismo dialogo porque este dialogo sirve para programar una tarea.
Recien cuando la tarea sea realizada deberias ingresar la fecha de finalizacion con otro dialogo.
Al no tener la fecha guardada a simple vista podes saber cuales tareas faltan realizar y si estan vencidas o por vencerce.
Con respecto al ingreso de la fecha no vi ningun problema yo la ingreso asi 04-03-20.
Suerte y no aflojes
Código: Seleccionar todo
ThisComponent.Sheets(1).GetCellByPosition(6,Fila).SetFormula( xDato )
' Reemplaza el 6 por 7 GetCellByPosition(columna, Fila) se cuentan desde cero
Recien cuando la tarea sea realizada deberias ingresar la fecha de finalizacion con otro dialogo.
Al no tener la fecha guardada a simple vista podes saber cuales tareas faltan realizar y si estan vencidas o por vencerce.
Con respecto al ingreso de la fecha no vi ningun problema yo la ingreso asi 04-03-20.
Suerte y no aflojes
LibreOffice 6.1 en KDE Neon
Re: Macro para sobrescribir datos con formulario
Vale, he estado probando y he detectado el problema de la fecha y es que lo guarda de la siguiente manera: mes/día/año, en vez de día/mes/año.
Además, he ido añadiendo las demás casillas que necesitaba para Fecha de Realización y Observaciones, la primera perfecto, pero al añadir la segunda me salta el error siguiente que aparece en la imagen adjunta.
Aquí os dejo el código:
Además, he ido añadiendo las demás casillas que necesitaba para Fecha de Realización y Observaciones, la primera perfecto, pero al añadir la segunda me salta el error siguiente que aparece en la imagen adjunta.
Aquí os dejo el código:
Código: Seleccionar todo
' Almacena los datos en la siguiente línea disponible de la Hoja2, y vacía los datos del formulario
Sub Guardar_Datos()
'-------------------------------------------------------------------
Dim xDato As Variant, nRow As Long
Dim Fila As Integer
Dim Mensaje1 As String
Dim Mensaje2 As String
Dim Mensaje3 As String
Dim Mensaje4 As String
Dim Mensaje5 As String
With oDialogo.Model
If .ComboBox1.Text = "" then
Mensaje1 = "Falta seleccionar Tipo de Mantenimiento"
end if
If .TextField1.Text = "" then
Mensaje2 = "Falta introducir Nombre Operario/Empresa"
end if
If .TextField2.Text = "" then
Mensaje3 = "Falta introducir Fecha Programada"
end if
If .TextField3.Text = "" then
Mensaje4 = "Falta introducir Fecha de Realización"
end if
If .TextField4.Text = "" then
Mensaje5 = "Falta introducir Observaciones (si no existen, introduzca un guión [-])"
End With
If Mensaje1 <> "" or Mensaje2 <> "" or Mensaje3 <> "" or Mensaje4 <> "" or Mensaje5 <> "" then
MsgBox Mensaje1 & Chr(10) & Mensaje2 & Chr(10) & Mensaje3 & Mensaje4 & Mensaje5, 64, "Diálogo en Calc"
exit sub
end if
If Ir_A = "CT1" then
Fila = 6
end if
If Ir_A = "CT2" then
Fila = 7
end if
If Ir_A = "GE" then
Fila = 8
end if
If MsgBox( "¿Deseas guardar los cambios realizados?", 33, "Diálogo en Calc" ) = 1 Then
nRow = UltimaFila( 1 )
if oDialogo.getControl("CheckBox1").State = False then
MsgBox "Active la casilla de verificacion si quiere guardar los datos", 64, "Diálogo en Calc"
exit sub
end if
With oDialogo.Model
xDato = .ComboBox1.Text
ThisComponent.Sheets(1).GetCellByPosition(4,Fila).SetFormula( xDato )
xDato = .TextField1.Text
ThisComponent.Sheets(1).GetCellByPosition(5,Fila).SetFormula( xDato )
xDato = .TextField2.Text
ThisComponent.Sheets(1).GetCellByPosition(7,Fila).SetFormula( xDato )
xDato = .TextField3.Text
ThisComponent.Sheets(1).GetCellByPosition(6,Fila).SetFormula( xDato )
xDato = .TextField4.Text
ThisComponent.Sheets(1).GetCellByPosition(8,Fila).SetFormula( xDato )
.ComboBox1.Text = ""
.TextField1.Text = ""
.TextField2.Text = ""
.TextField3.Text = ""
.TextField4.Text = ""
End With
End If
Ir_A = ""
oDialogo.EndExecute()
End Sub
OpenOffice 4.1.7 en Windows 10
- gustavodiaz00
- Mensajes: 64
- Registrado: Mié Abr 26, 2017 1:29 am
- Ubicación: Argentina, San Nicolás de los Arroyos
Re: Macro para sobrescribir datos con formulario
Hola te falta un end if en
If .TextField4.Text = "" then
Mensaje5 = "Falta introducir Observaciones (si no existen, introduzca un guión [-])"
If .TextField4.Text = "" then
Mensaje5 = "Falta introducir Observaciones (si no existen, introduzca un guión [-])"
LibreOffice 6.1 en KDE Neon
Re: Macro para sobrescribir datos con formulario
Cierto, no me había dado cuenta.
Muchísimas gracias compañero. Funciona de lujo!!!
Muchísimas gracias compañero. Funciona de lujo!!!
OpenOffice 4.1.7 en Windows 10
- gustavodiaz00
- Mensajes: 64
- Registrado: Mié Abr 26, 2017 1:29 am
- Ubicación: Argentina, San Nicolás de los Arroyos
Re: [RESUELTO] Macro para sobrescribir datos con formulario
Creo que el tema esta resuelto.
Si es asi marca el tema como resuelto y cualquier duda abri otro tema
Saludos
Si es asi marca el tema como resuelto y cualquier duda abri otro tema
Saludos
LibreOffice 6.1 en KDE Neon
Re: [RESUELTO] Macro para sobrescribir datos con formulario
Hola, sigo teniendo el mismo problema con la fecha y es que no lo guarda bien.
Si introduzco, por ejemplo, 16-10-2021, se introduce así: '16-10-21. Con la comilla delante, porque no detecta que sea una fecha válida.
Sin embargo, si introduzco por ejemplo 09-03-2020, la introduce como: 03-09-2020.
¿Cómo puedo solucionar esto?
Si introduzco, por ejemplo, 16-10-2021, se introduce así: '16-10-21. Con la comilla delante, porque no detecta que sea una fecha válida.
Sin embargo, si introduzco por ejemplo 09-03-2020, la introduce como: 03-09-2020.
¿Cómo puedo solucionar esto?
OpenOffice 4.1.7 en Windows 10
- gustavodiaz00
- Mensajes: 64
- Registrado: Mié Abr 26, 2017 1:29 am
- Ubicación: Argentina, San Nicolás de los Arroyos
Re: Macro para sobrescribir datos con formulario
Hola te envio una modificación
LibreOffice 6.1 en KDE Neon
Re: Macro para sobrescribir datos con formulario
Nada, sigue ocurriendo el mismo problema, la comilla (') aparece al principio de la fecha y se introduce como MM/DD/AAAA
OpenOffice 4.1.7 en Windows 10
- PepeOooSevilla
- Mensajes: 1480
- Registrado: Sab Abr 04, 2009 6:10 pm
- Ubicación: Sevilla (España)
Re: Macro para sobrescribir datos con formulario
Hola.
Sustituye la línea 156 (procedimiento Sub Guardar_Datos()):
Por esta otra:
Y nos cuentas ...
Saludos cordiales.
Sustituye la línea 156 (procedimiento Sub Guardar_Datos()):
Código: Seleccionar todo
ThisComponent.Sheets(1).GetCellByPosition(6,Fila).SetFormula( xDato )
Código: Seleccionar todo
ThisComponent.Sheets(1).GetCellByPosition(6,Fila).SetValue( CDate(xDato) )
Saludos cordiales.
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Re: Macro para sobrescribir datos con formulario
Perdón por al demora en responder, acabo de verlo.
Perfecto, ya si funciona. Muchas gracias!!!
Perfecto, ya si funciona. Muchas gracias!!!
OpenOffice 4.1.7 en Windows 10