[RESUELTO] Depurando una macro sencilla

Discute sobre la aplicación de hojas de cálculo
Responder
Avatar de Usuario
osmio
Mensajes: 68
Registrado: Mié Jul 22, 2009 8:04 pm

[RESUELTO] Depurando una macro sencilla

Mensaje por osmio »

Amigos:
Hace tiempo hice, con mucha ayuda, unas macros para un programa para mi taller. Ahora con un poco mas de tiempo quiero depurar algunas macros que grabe con la grabadora, que funcionan pero cada vez que quiero agregar un campo tengo que hacer todo de nuevo.
La cuestión es copiar ciertas celdas de una hoja y pegarlas en forma progresiva en otra hoja.
Estaba pensando en una matriz, para ello hice:

"Sub prueba
Dim oHojaActiva As Object
Dim oCelda (5) As variant
dim I as integer

oHojaActiva = ThisComponent.getCurrentController.getActiveSheet()
oCelda (1) = oHojaActiva.getCellRangeByName( "a2" )
oCelda (2) = oHojaActiva.getCellRangeByName( "b2" )
oCelda (3) = oHojaActiva.getCellRangeByName( "c3" )
oCelda (4) = oHojaActiva.getCellRangeByName( "d4" )

for I=1 to 5
MsgBox oCelda(I).getString()
next
End Sub"

el bucle for/next solo lo hice para probar.
El problema es ¿como dirijo estos datos a la otra hoja? ¿y como hago para que no se sobreescriba?....probando lo que sugiere don Mauricio en su libro, me tira error.... y no logro resolverlo.

¿Alguien tiene alguna idea para darme?

Gracias, un abrazo
Última edición por osmio el Lun Dic 14, 2009 12:59 am, editado 1 vez en total.
Snow Leopard 10.6.4, intel, RAM 4 Gb. Ooo 3.3 dev
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Depurando una macro sencilla

Mensaje por mauricio »

Hola Daniel:

Recuerda que siempre es util muestres el código donde te da el error para analizarlo. Lo que quieres es sencillo pero puede tener muchas variantes, te anexo un archivo de ejemplo con un primer intento. Verifica si es lo que quieres y si es así, ya sabes, marca el hilo como resuelto.

Saludos
Adjuntos
MoverDatos.ods
(9.48 KiB) Descargado 449 veces
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
osmio
Mensajes: 68
Registrado: Mié Jul 22, 2009 8:04 pm

Re: Depurando una macro sencilla

Mensaje por osmio »

Hola Mauricio:
Muchas gracias por tu pronta respuesta. Este fin de semana voy a probar lo que me sugieres, pero, tal como lo hiciste siempre...estoy seguro que funcionará.

Si, lo del código lo pensé pero no lo consideré importante, veo que me equivoque... la próxima lo tendré en cuenta.

Abrazo
Snow Leopard 10.6.4, intel, RAM 4 Gb. Ooo 3.3 dev
Avatar de Usuario
osmio
Mensajes: 68
Registrado: Mié Jul 22, 2009 8:04 pm

Re: <Resuelto>Depurando una macro sencilla

Mensaje por osmio »

Hola Mauricio:
La macro funciona perfectamente, por ende el tema esta resuelto. muchas gracias.
Solo por curiosidad, he visto que localizas la ultima fila y copias allí, esta muy bien solo que tengo una duda. Si quisiéramos insertar la fila sobre los datos tal que el mas "nuevo" quede encima de todos, ¿es factible?.

Un fuerte abrazo
Snow Leopard 10.6.4, intel, RAM 4 Gb. Ooo 3.3 dev
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Depurando una macro sencilla

Mensaje por mauricio »

Estimado Daniel:

Puras cosas fáciles me pones. Te anexo el archivo con el cambio deseado. Este código tiene dos "pequeñas" deficiencias, que, esas sí, te toca encontrar y solucionar.

Saludos
Adjuntos
MoverDatos_v2.ods
(9.37 KiB) Descargado 252 veces
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
osmio
Mensajes: 68
Registrado: Mié Jul 22, 2009 8:04 pm

Re: <Resuelto>Depurando una macro sencilla

Mensaje por osmio »

Don Mauricio:
Es usted muy gentil, pero un tanto perverso...jaja.
A ver, veamos....cuando ejecute el scrip vi que solo copiaba 3 de los cuatro valores, ademas solo borraba los 3 copiados. Bueno, no se si hice lo correcto pero dimensione la matriz mDatos con 4 elementos (que son 5 con el cero) en lugar de 3. De esta manera el LBound y UBound se redimensiona y "lee" todos los valores......
Tal vez fue una casualidad, pero asi me funciona bien.

Me dices, en el scrip que use getValue si tengo numeros. De hecho lo tengo, quisiera suponer que debo usarlo en lugar de getString. ¿verdad?.


Otro tema, esta mañana en el taller me preguntaron si podia "ampliar" la macro para elegir el nombre al guardarlo. Esto lo hago con el scrip que tu me proporcionaste y actualmente estoy usando solo el numero de orden, que corresponde a la celda "d3" (el numero de la captura de pantalla seria el 179). Yo, pense que era facil, cambie en el scrip:
oCelda = oHoja.getCellRangeByName("d3") por oCelda = oHoja.getCellRangeByName("d3:e3") de manera que "leyera" las dos celdas ("179 B") en el ejemplo.... pero me aparecio un error de ejecucion que me desoriento. Te adjunto la captura de pantalla, espero puedas leerla..

Es decir el objetivo planteado es: Guardar el archivo tomando los dos valores de celda tal que figure.. "179 B.ods" en este caso. Esto es asi porque si viene un cliente y pide mas de un marco, la orden de trabajo es la misma...179 que esta asociada a tal cliente, pero a su vez con "A", " B"... etc corresponde a trabajos diferentes ... me indica que solicito mas de una cosa.

Abrazo y gracias.... ahhh dime si las deficiencias eran esas..... Si mi ultima pregunta amerita abrir un nuevo hilo, por favor avisame.... no quiero salirme de las reglas.



Daniel
Adjuntos
screen-capture-1.png
Snow Leopard 10.6.4, intel, RAM 4 Gb. Ooo 3.3 dev
Avatar de Usuario
osmio
Mensajes: 68
Registrado: Mié Jul 22, 2009 8:04 pm

Re: <Resuelto>Depurando una macro sencilla

Mensaje por osmio »

Hola:
Ya he resuelto el problema que he planteado.
Muchas gracias
Snow Leopard 10.6.4, intel, RAM 4 Gb. Ooo 3.3 dev
Responder