Anecdota con error en ejecución de macro - Novato (y mucho)

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
velezser
Mensajes: 5
Registrado: Mar Nov 24, 2009 2:54 pm

Anecdota con error en ejecución de macro - Novato (y mucho)

Mensaje por velezser »

En primer lugar quiero manifestar que se me presentaba un error ejecutando mi primer macro y no sabía que era, hasta que descubrí que sólo tenía que cerrar el archivo (de calc) en el que estaba trabajando, luego volverlo a abrir y ya desaparecía el error.
La macro es sencilla, es ingresar un artículo mediante un botón (en la hoja sheet 1) que me abre una caja de diálogo donde pongo los datos del artículo y al darle clic al botón ingresar de la caja de diálogo me pone los datos en la hoja siguiente (sheet1). Luego, cuando creé otra opción para ingresar algunos insumos, y al ejecutar esta segunda opción, que es prácticamente igual a la primera, pero los datos se registran en la hoja 3 (sheet 3), al dar clic al botón salir me generaba un error y me abría la caja de diálogo de la primera macro.
Como digo, acabo de encontrar la solución, que consiste en cerrar el archivo y al volverlo a abrir ya se ejecuta sin error. Pongo este topic, porque creo que debe haber más de un novato como yo, que les puede pasar lo mismo y se desaniman (al igual que yo), creyendo que debe haber algo por ahí que nadie dice, como si se guardaran los secretos... en fin, la cosa es que como siempre que intentaba corregir la macro, nunca cerraba y volvía a abrir, o cuando lo hacía siempre hacía las modificaciones primero, pues siempre me generaba este error y hoy de casualidad me dí cuenta de lo que pasaba.

No se si lo de este error ya esté escrito por ahí, así que el moderador de este foro puede reubicar este mensaje si ya existe el topic.
Hace más de un año me encontré el manual del señor Mauricio y me animé a hacer mis propias macros, pero como me encontraba siempre con algún error como el que he descrito y no sabía a que se debía, siempre abandonaba y seguía trabajando sin macros.

Esta solución debe estar escrita en el texto del señor Mauricio, sólo la primera vez que lo leí iba haciendo los ejercicios que se proponían ahí, pero luego sólo lo miraba como referencia, así que la solución a esta situación nunca la encontré re-leyendo el manual y pienso que puede ser de ayuda para alguien a que le pase lo mismo.
Me disculpan por tanta carreta (carreta=cháchara, habladera, etc)
Openoffice.org 2.0 - windows 98.
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Anecdota con error en ejecución de macro - Novato (y muc

Mensaje por mauricio »

Hola...

Si mostraras el código donde te da el error o mejor aun el archivo donde lo hace, casi te puedo asegurar que es un detalle nimio... si es verdad que usas la versión de tu firma, es una versión muy vieja, como lo comento en el libro, todos los ejemplos están en la ultima estable, 3.2.1. en este momento, aunque por lo que comentas, lo que haces no debe de tener problema en esa versión aunque de nuevo, así sin ver es muy complicado ayudarte, en el mismo libro menciono los medios para resolver tus dudas durante tu aprendizaje, no se por que no los has usado hasta ahora...

La solución que mencionas de cerrar y abrir el archivo, en realidad no es solución, hay que ver el código para esto...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
velezser
Mensajes: 5
Registrado: Mar Nov 24, 2009 2:54 pm

Re: Anecdota con error en ejecución de macro - Novato (y muc

Mensaje por velezser »

Hola, mi interés no es polemizar, como tu dices debe ser algo muy sencillo. Sin embargo a lo que me refiero, es que cuando creía que tenía lista la macro y la ejecutaba me generaba algún error como objeto no creado, pero al revisar veía que sí estaba creado (o si no estaba lo declaraba, pero al ejecutar nuevamente me salía el error). Por ejemplo, creé una macro para ingresar artículos y otra para insumos en el mismo archivo, pero al ejecutarla, como me generaba error y no sabía por qué, entonces las separé en módulos diferentes, pero como expresé inicialmente, al volver a ejecutar me daba error, y sólo hasta que cerré open office y volví a abrir y ejecutar la macro, me funcionó (y eso sólo fué esta semana). No creo que sea algo de versión, lo más seguro es que sea un error mío ya que soy muy novato y a lo mejor esté pasando algo por alto, sin embargo no creo que sea error de versión, porque aunque en mi firma puse que trabajo con windows 98 y con openoffice versión 2.0, en mi casa trabajo con window 7 y open office 3.2.1
Adjunto te envío el último archivo que hice con el que me trabaja bien la macro:
REM ***** BASIC *****
Dim oDialogo As Object

Sub AbreFormularioIngresoArticulo
DialogLibraries.LoadLibrary("Standard")
oDialogo=createUnoDialog(DialogLibraries.Standard.Dialog2)
oDialogo.Title="Ingresar Artículos"
oDialogo.execute()
End Sub

Sub Salir
oDialogo.endExecute()
End Sub

Sub IngresarArticulo
Dim Hoja As Object, codigoArticulo As String, descripcion As String, cantidadCuero As Integer, tiempo As Double
Hoja=ThisComponent.Sheets(2)
codigoArticulo=oDialogo.Model.TextField5.Text
Dim i As Integer, existe As Boolean
existe=false
i=0
Do While Hoja.getCellByPosition(0,i).getString<>""
If Hoja.getCellByPosition(0,i).getString=codigoArticulo Then
MsgBox("El código ya existe"+Chr(10)+Hoja.getCellByPosition(0,i).getString+Chr(10)+Hoja.getCellByPosition(1,i).getString, 16, "Artículo no Ingresado")
existe=true
End If
i=i+1
Loop
descripcion=oDialogo.Model.TextField6.Text
cantidadCuero=oDialogo.Model.TextField7.Text
tiempo=oDialogo.Model.TextField8.Text
If existe=false Then
Hoja.getCellByPosition(0,i).setString(codigoArticulo)
Hoja.getCellByPosition(1,i).setString(Ucase(descripcion))
Hoja.getCellByPosition(2,i).setFormula(Cantidadcuero)
Hoja.getCellByPosition(3,i).setFormula(tiempo)
oDialogo.Model.TextField5.Text=""
oDialogo.Model.TextField6.Text=""
oDialogo.Model.TextField7.Text=""
oDialogo.Model.TextField8.Text=""
MsgBox("El artículo fué ingresado al sistema", 64, "Artículo Ingresado con éxito")
End If

End Sub
Openoffice.org 2.0 - windows 98.
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Anecdota con error en ejecución de macro - Novato (y muc

Mensaje por mauricio »

Hola...

Tampoco el mio, mi interés es ayudar y enseñar, aunque la polémica no me parece mala en sí. Como haces uso de cuadros de diálogo, es mucho más sencillo que anexes tu archivo, de este modo se puede probar directamente el código para encontrar el error, si no, tengo que ir analizando tu código y crear todo desde cero, perdona pero no tengo mucho tiempo para ello. Por cierto, no mencionas las líneas donde te daba el error, así sin ver, tu código no parece tener error, aunque la búsqueda línea a línea no es lo mejor cuando la cantidad de artículos empieza a crecer.

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