Saludos a todos y todas. Ruego paciencia en su lectura por su extensión. Gracias.. !
--- El vie, 7/11/08, Alejandro Rivas Morán <[EMAIL PROTECTED]> escribió: > De: Alejandro Rivas Morán <[EMAIL PROTECTED]> > Asunto: Re: [d_es] Problemas con calculos y macro > Para: [email protected] > Fecha: viernes, 7 noviembre, 2008 5:26 > Saludos Eduardo. > > --- El jue, 6/11/08, Eduardo Moreno > <[EMAIL PROTECTED]> escribió: > > > De: Eduardo Moreno <[EMAIL PROTECTED]> > > Asunto: Re: [d_es] Problemas con calculos y macro > > Para: [email protected] > > Fecha: jueves, 6 noviembre, 2008 10:32 > > Hasta donde yo entiendo, la configuración no tiene > nada que > > ver con la forma en que metes el código. > > > > Si tu configuración es España (Coma decimal) y > guardas el > > número 2,33 y abres ese archivo en un sistema > configurado > > para México (Punto decimal), aparece 2.33. > > > > Ahora, lo que to entiendo que sucede es que estas > > capturando con coma decimal dentro de una > configuración que > > usa punto decimal, es decir, no estas capturando > números, > > sino texto. > > > > Código que se me ocurre: > > > > Option Explicit > > > > Function MeteNumero(eColumna As Integer, eFila As > Integer) > > Dim oHoja, Celda As Object > > > > oHoja = > > ThisComponent.getCurrentController.getActiveSheet() > > oCelda = oHoja.getCellByP0sition(eColumna, eFila) > > 'En caso de que el contenido de la celda no > sea un > > numero, > > 'mandamos un mensaje de error. > > Select Case oCelda.Type > > Case com.sun.star.table.CellContentType.EMPTY > > MsgBox "La celda esta vacía" > > Case com.sun.star.table.CellContentType.TEXT > > MsgBox "Debe escribir un numero" > > Case com.sun.star.table.CellContentType.FORMULA > > MsgBox "La celda ccntiene una > fórmula, > > escriba un numero" > > Case com.sun.star.table.CellContentType.VALUE > > tufuncion() > > End Select > > End Sub > > > > Alejandro Rivas Morán escribió: > > > Saludos. > > > > > > TEngo una macro que captura tres numeros y > calcula > > porcentajes para cada uno. Luego los suma y el total > se > > inserta en una celda. > > > El problema consiste en la configuración > regional. Si > > usa , -coma- decimal, el total en la celda sale sin > puntos > > -Numero Entero-; pero si usa . -punto- todo sale > bien. > > > > > > > > > He logrado agregar un código así: inserto un > número > > decimal como 2.55 y lo recupero de nuevo -como cadena > > GetString()-. Le localizo la coma y si la tiene > suspende la > > macro -por ahora- (aqui quiero poner código para > corregir > > la configuracion); y si no la tiene entonces sigue el > > proceso. > > > > > > > > > Soluciono el problema cambiando la configuracion > > regional del OpenOffice en > > Herramientas>Opciones>Configuracion de > > idioma>idiomas> Ahi cambio a: > > > [Interfaz de usuario] Español > > > [Esquema local] Español El Salvador > > > [Moneda predeterminada] USD $ Estados Unidos. > > > > > > Ahora bien, la reducida experiencia no me deja > crear > > un código para adjuntarlo y que corrija por medio de > la > > macro la falla de la configuración . He buscado > algunas > > informaciones pero no encuentro salida. POr ejemplo, > hallé > > algo en > > > http://api.openoffice.org/docs/common/ref/com/sun/star/lang/Locale.html > > pero no se como estructurarlo para meter esos cambios > > > > La situación es que van en un archivo que se da > a > > muchas personas. Ellas los llevan a casa, realizan > los > > llenados y lo devuelven. Cada usuario a instalado el > > OpenOffice 2.x en su equipo. > > > > > > Espero me colaboren con el código para hacer la > > correccion a la configuracion regional por macro. > > > Gracias anticipadas > > > > > > > > > La situacion es asi: > 1.- ingreso por ejemplo 5 y luego se calcula el 25% que > sería 5x0.25 > 2.- el resultado que se muestra es 1,25 > 3.- cuando se inserta en la celda no aparece como 1.25 ni > 1,25 sino 125 > > Cuando se hace con la configuracion regional Español(El > Salvador) como se detalla párrafos abajo, entonces es asi: > > > 1.- ingreso por ejemplo 5 y luego se calcula el 25% que > sería 5x0.25 > 2.- el resultado que se muestra es 1.25 > 3.- cuando se inserta en la celda aparece como 1.25 y en > la celda también como 1.25 > > > Entonces asumo que es la confiración regional. Incluso > este comportamiento no tiene relación según lo he > experimientado, con la configuración regional del sistema > operativo. > > CUal es mi problema? . Hay mas de 100 OpenOffices > instalados en las casas de los usuarios y en varios casos > que lo han instalado nuevamente, el Open queda con > prederterminados que son los que necesito cambiar por medio > de un código de macro que permita cambiar las propiedades > de: > > Herramientas>Opciones>Configuracion de > idioma>idiomas> > > y cambiar las a : > [Interfaz de usuario] Español > [Esquema local] Español El Salvador > [Moneda predeterminada] USD $ Estados Unidos. > > ------------------ > Lo que mencionaba del GetString() solo es parte del > experimento para ver cómo realmente es el dato insertado en > la celda. > ----------------- > > Nuevamente gracias y espero ayuda. > > Comentario: Usar el código OOmacro es un verdadero reto. Hoy me encuentro con algo que parece sencillo. a) Saber la configuración regional del OpenOffice y b) personalizarla según el país. En OO-Macros. saber definir propiedades, servicios, etc... es de pocos...! No digamos saber sobre los argumentos y funciones disponibles en todo el OObasic. Por ejemplo: En el libro de Pytoniac hay un pequeño código para leer la versión del OO activo. Sub OpenVersion Dim oSet, oConfigProvider Dim oParm(0) As New com.sun.star.beans.PropertyValue Dim sProvider$, sAccess$ sProvider = "com.sun.star.configuration.ConfigurationProvider" sAccess = "com.sun.star.configuration.ConfigurationAccess" oConfigProvider = createUnoService(sProvider) oParm(0).Name = "nodepath" oParm(0).Value = "/org.openoffice.Setup/Product" oSet = oConfigProvider.createInstanceWithArguments(sAccess, oParm()) OpVersion=oSet.getByName("ooSetupVersion") msgbox OpVersion End sub Y por ahí encontré este código para extraer el idioma del OpenO: sub OpenLenguaje Dim oSet, oConfigProvider, OOLangua as string Dim oParm(0) As New com.sun.star.beans.PropertyValue Dim sProvider$, sAccess$ sProvider = "com.sun.star.configuration.ConfigurationProvider" sAccess = "com.sun.star.configuration.ConfigurationAccess" oConfigProvider = createUnoService(sProvider) oParm(0).Name = "nodepath" oParm(0).Value = "/org.openoffice.Setup/L10N" oSet = oConfigProvider.createInstanceWithArguments(sAccess, oParm()) OOLangua= oSet.getbyname("ooLocale") msgbox OOLangua End sub Se puede notar que los argumentos en oSet.getbyname("?"), al igual que en oParm(0).Value="?" (y otros) van cambiando. ¿ Qué documentación posee esa lista de argumentos, de parámetros, etc.. ? (Detalles para que alguien como quien escribe estos comentarios pueda tomar de ahí). en la URL http://api.openoffice.org/docs/common/ref/com/sun/star/configuration/ConfigurationProvider.html he podido leer algo de lo anterior pero se requiere ¿!? para poder interpretarlo. Uso mucho OpenOffice Writer y mas Calc. He podido articular muchas macros de aplicación simple y para usar en hoja electrónica. Pero NO logro entender la lógica de la jerarquía del código. Las macros se contruyen en base a ejemplos de libros y ayudas en grupos como este, pero si es dificil. Recuerdo que tardé casi 8 meses para resolver un problema en el que necesitaba pasar varias hojas de un archivo X(no abierto) en otro abierto y luego guardarlo como X nuevamente (la porción de código mas dificil, por cierto me la regalaron aqui, muy amablemente). Ahora lo usamos para recopilar informaciones de muchos usuarios quienes se llevan el archivo arreglado (para sus casas), proceden a llenar los datos y luego lo devuelven para nuevamente repetir el ciclo. Eso ha ayudado mucho. Pero hoy tenemos el pro blema de la configuración del idioma del OpenOffice, el cual se relata en los párrafos de arriba. Gracias por la paciencia. Saludos nuevamente --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
