Página 1 de 2

Aprendiendo macros OOo Basic [29-Mar-19]

Publicado: Vie Jul 24, 2009 8:30 am
por mauricio
29-Marzo-19
He terminado de revisar dos nuevos temas

10-Marzo-19
He comenzado con la revisión de código, ahora pueden ver el resultado por acá:
https://macros.elmau.net/es/

28-Febrero-19
He cambiado el repositorio del libro, ahora lo pueden ver por aquí:
https://gitlab.com/mauriciobaeza/libreoffice-macros

Estoy trabajando en la revisión y actualización del libro, esperen noticias pronto.

Esta es la hoja de ruta de la actualización del libro: https://elmau.net/posts/hoja-de-ruta/

Cualquier ayuda es bienvenida

Re: Apuntes de OOo Basic ACTUALIZADO

Publicado: Vie Jul 24, 2009 11:28 am
por RGB-es
El único comentario que tengo por el momento es: ¡muchas gracias!
Pongo el tema como "fijo" para que sea más visible.
¡Muchas gracias por tu gran trabajo! :bravo:

Re: Apuntes de OOo Basic ACTUALIZADO (02-Ago-09)

Publicado: Mié Ago 05, 2009 6:59 am
por cmarcen
Estoy siguiendo estos apuntes. Se me ha abierto el cielo porque quería abandonar MS y tenían unas macros en VB que me habían costado mucho. He conseguido reproducirlas con OOo Basic. Espero la continuación como agua de mayo.
Muchas gracias.

Re: Apuntes de OOo Basic ACTUALIZADO (08-Ago-09)

Publicado: Sab Ago 08, 2009 11:19 pm
por mauricio
Hola...

Que bueno que te han servido, me es muy útil la retroalimentación para el desarrollo de más temas, ojala puedas enviarme tus comentarios a mi correo personal.

Gracias

Mauricio

Re: Apuntes de OOo Basic ACTUALIZADO (17-Ago-09)

Publicado: Mar Ago 18, 2009 8:00 pm
por cmarcen
Hola Mauricio,

Como digo más arriba, los apuntes me parecen excelentes y estoy esperando la nuevas actualizaciones.
Permíteme una sugerencia que podría ayudar a los usuarios que se inician en OpenOffice-Basic.
Se trata del acceso a documentos cuando se trata con cuando no se trabaja con uno solo.
Creo que permitiría crear un documento con las macros y colocar los botones en un formulario.
Yo he resuleto el problema del modo siguiente.

Código: Seleccionar todo

- Defino variables globales para cada documento:
Public docMacros, DocTodos,  DocMatricula, DocNiveles, DocMaterias as object
- Después los abro con la siguiente rutina:
	DocMatricula=AbreDoc("matricula.ods")
	DocNiveles=AbreDoc("niveles.ods")
	DocMaterias=AbreDoc("materias.ods")

function AbreDoc(doc as string) 
dim i as integer
dim lExiste as boolean
dim urlDoc
dim Dummy()

UrlDoc =url+doc

	'Genera una lista de domumentos abiertos en la matriz NombreDocumentos
	ListaDocumentos
	'Comprueba si ya está abierto
	for i=0 to  UBound( NombreDocumentos() )
		lExiste=(doc=NombreDocumentos(i))
		if lExiste then
			AbreDoc=aDocumentos(i)
			exit function
		end if
	next
	' Si no está abierto lo abre
	if not lExiste then
		AbreDoc=StarDesktop.LoadComponentFromURL(urlDoc,doc,0,Dummy())
	end if

end function

- Luego accedo del modo siguiente:

....
hojaOrigen=docMatricula.sheets(0)
hojaDestino=docTodos.sheets(0)
....
...
		aRegistro(12)=hojaOrigen.getCellByposition(1,fila).string 
		aRegistro(13)=hojaOrigen.getCellByposition(2,fila).string 
		aRegistro(14)=hojaOrigen.getCellByposition(3,fila).string 
...
...
...
		for i=0 to  UBound( aRegistro() )
			hojaDestino.getCellByposition(i,fila).string=aRegistro(i)
		next

Espero que esta sugerencia puedas incluirla, a mi me habría ahorrado mucho tiempo de búsqueda.
Saludos
Carlos

Re: Apuntes de OOo Basic ACTUALIZADO (17-Ago-09)

Publicado: Mar Ago 18, 2009 8:16 pm
por mauricio
Hola Carlos...

Gracias por la sugerencia, la revisare con calma y lo consideraré...

Como vez el día de ayer hubo actualización, tal vez podrías considerar pasar tus datos a una base de datos...

Saludos

Mauricio

Re: Apuntes de OOo Basic ACTUALIZADO (17-Ago-09)

Publicado: Mar Ago 18, 2009 8:59 pm
por cmarcen
Hola Mauricio

Por supuesto que estoy muy interesado en la base de datos.
Mis últimos pinitos los hacía en MSAccess
El trabajo del post anterior consiste en exportar datos de un programa de gestión (evaluación de un centro), exporta en CSV y tengo que manipularlos para obtener otras tablas para otro programa.
Supongo que con bases de datos tambíen podría optimizar el trabajo y exportar las tablas.
Gracias y saludos

Carlos

Re: Apuntes de OOo Basic ACTUALIZADO (17-Ago-09)

Publicado: Mar Ago 18, 2009 9:02 pm
por mauricio
Hola...

Si estas manipulando CSV, tal vez te interese el siguiente hilo:

http://user.services.openoffice.org/es/ ... =50&t=1640

En el, subí un ejemplo de como manipular un CSV, puede adaptarse al formato del tuyo.

Saludos

Mauricio

P.D. Pronto empezare la redacción de Base con OOo Basic

Re: Apuntes de OOo Basic ACTUALIZADO (06-Sep-09)

Publicado: Mar Sep 08, 2009 3:17 am
por Alfredo_9172
Hola, baje los apuntes y voy en la pagina 21, ¡wow! muchas gracias, enserio que me sorprendo de que haya gente que comparta sus conocimientos sin pedir $$nada$$ a cambio.
De nuevo gracias y mis respetos por tu desinteres.

Saludos

Re: Apuntes de OOo Basic ACTUALIZADO (22-Sep-09)

Publicado: Dom Sep 27, 2009 6:57 pm
por caifanmmx
Estimado Mauricio mi nombre es Lenin y ante todo quisiera agradecerte infinitamente tus estupendos aportes apenas voy a leer tu manual me ha surgido el interes en programar en calc debido a que actualmente trabajo en el imss y ahi solo utilizan openoffice y realmente me he quedado fascinado con la versatilidad de las macros y procedures que hay .. Ante todo que bueno que un Mexicano sea el que enaltezca mediante este tipo de material nuestro pais de antemano mucha suerte y si hay alguna duda en particular pudiese contar con tu apoyo
Un abrazo desde Ecatepec Estado de Mexico

Re: Apuntes de OOo Basic ACTUALIZADO (22-Sep-09)

Publicado: Lun Sep 28, 2009 2:24 am
por mauricio
Hola Lenin:

Si, estoy enterado que en el IMSS están usando OOo, también se que los responsables de esta implementación están un poco desligados de la comunidad OOo, eso podría cambiar vía los usuarios, como tu, felicidades por tu interés e invita a tus compañeros de trabajo a sumarse a la comunidad. Por supuesto que cuentan con mi apoyo, pueden resolver sus dudas, este foro donde procuro responder frecuentemente.

Supongo que has de trabajar en el D.F., ¿no?, de todos modos Ecatepec no esta muy lejos y conozco, pues viví unos años en la vecina Tultitlan

Saludos

Mauricio

Re: Apuntes de OOo Basic ACTUALIZADO (04-Oct-09)

Publicado: Lun Oct 05, 2009 8:01 pm
por cmarcen
Felicidades y muchas gracias por el trabajo realizado.
Es una gran ayuda tener una guía tan bien estructurada.
Ahora echaremos de menos un documento similar dedicado la las bases de datos.
Me estoy planteando si entrar en este tema desde OOo Basic o dedicarme directamente a MySql, Creo que el segundo caso puede ser más interesante de cara a una gestión en red local de un programa de facturación.
Ahor atengo mucho trabajo, pero a un año vista tendré más tiempo y me gustaría colaborar en un trabajo de gestión de bases de datos.
Lo último serio que hice fue en Cliper.
Saludos.

Re: Apuntes de OOo Basic ACTUALIZADO (04-Oct-09)

Publicado: Sab Oct 10, 2009 7:17 am
por mauricio
Hola...

Gracias por tus palabras. Si, estoy de acuerdo contigo, hace falta algo así para las bases de datos, por ello, tengo contemplado empezarlo en cuanto termine este dedicado a la hoja de calculo, de hecho, estos tres últimos temas, Formularios, Cuadros de diálogo y Eventos (en desarrollo), sirven para cualquiera de las aplicaciones de OOo, por lo que aprovecharemos esta documentación ya generada.

¡¡Clipper!!, muy buen lenguaje de programación, pero tiene como quince años que no toco una línea de este lenguaje, ahora estoy con OOo Basic y Phyton.

Toda colaboración para la comunidad es bien recibida, hay mucho trabajo por delante y no necesariamente tienen que saber programar.

Saludos

Re: Apuntes de OOo Basic ACTUALIZADO (22-Oct-09)

Publicado: Lun Nov 16, 2009 5:11 pm
por emari2
Impresionante y felicidades. Echo de menos algo que ando buscando y no soy capaz a sacarlo
aunque lo intentaré, pero Vds. si que lo podrían poner en el manual,.
Se trata de exportar una hoja completa de ooocalc a la base de datos ooobase y despues actualizar
la base a medida que se va modificando la hoja.
Les explico el problema para mejor comprensión
Tengo una tabla con los siguientes campos
Nombre 1er. examen parcial 2nd. examen parcial examen final notaMedia actitudenclase Nota final

Luis 5.2 6.1 Marcela 3.4 3.8

etc. asi hasta 30 alumnos.
Lo que he hecho ha sido crear la base de datos y seleccionar el rango(en la hoja de calculo) con los nombres que luego(después) se convierten en nombres del campo en
la base de datos y pegarla dentro de la base, con lo que ya se genera la tabla. Como este paso lo tengo que hacer una sola vez, es fácil y no necesito hacerlo por código. Por lo que ya tengo la base
de datos de alumnos con las notas del 1er y 2do parcial.
Una vez que hacen el examen final que introduzco en la hoja de cálculo, quiero actualizar la base de datos. Esto quiero hacerlo con un pushbutton
en la propia hoja que al pulsar ejecuta la macro de actualización de la base de datos. Y asi para los otros datos. De tal manera que haga uso
del boton, las veces que sean necesarias.
Es un poco pedirles la expansión del apartado Exportación mutatis mutandis como el de Importación. Como el nombre puede cambiar o modificarse por mal escrito o cualquier nota previa también por erronea
la necesidad es no solo exportar un campo concreto(nota final) sino todas de nuevo para asimilar los cambios que pudieran haberse realizado.
Saludos Cordiales

Re: Apuntes de OOo Basic ACTUALIZADO (22-Oct-09)

Publicado: Lun Nov 16, 2009 7:19 pm
por mauricio
Hola...

Por favor que no te ofendan mis palabras, lo aclaro, porque por estos lares son muy susceptibles, pero soy muy directo y no dejaré de serlo solo por algunos.

Recibo constantemente solicitudes de este tipo, es decir, poner cosas en el manual que resuelven una necesidad concreta de un usuario, y esa no es la idea de los apuntes. Te confieso algo, en el libro están las bases suficientes y ejemplos suficientes para resolver lo que estas planteando.

Te invito a que, como dices, lo intentes, publica tus avances o dudas particulares (y concretas) en este foro, que estaré en la mejor disposición de ayudarte.

Saludos y un abrazo.

Re: Apuntes de OOo Basic ACTUALIZADO (22-Oct-09)

Publicado: Mié Nov 18, 2009 7:55 am
por emari2
Gracias Mauricio. Lo he intentado y lo he conseguido. Lo que más me costó ha sido la sSQL porque no encontraba bien el camino. Quizá no es lo más elegante. Yo creo que lo mejor sería actualizar un registro de la Calc en un registro de Base.
Ahi va mi código

Código: Seleccionar todo

Sub Actualizar_Base
Dim oHoja As Object
Dim oCelda As Object
'Hacemos una referencia a la hoja activa
oHoja = ThisComponent.getCurrentController.getActiveSheet()
Dim Col As Long
Dim Fil As Long
dim nombre as string
dim primerparcial as string
dim final as string
dim ejerciciosclase as string
dim notrafinal1 as string
dim actitud as string
dim notafinal as string
Dim oDBC As Object
Dim oBD As Object
Dim oConexion As Object
Dim oDeclaracion As Object
Dim sBaseDatos As String
Dim sSQL As String
 dim URL
 
 URL=thisComponent.URL
 url=Mid(URL,1,len(URL)-9)
'
 sBaseDatos=url+ "curso.odb"


 col=0
 fil=5
 dim i as integer
 dim j as integer
 'aqui se declara la base y se abre
 'se hace que se pueda leer el primer registro
 
j=2
 for i=fil to fil+41
 
oCelda = oHoja.getCellByPosition( Col,i )

 nombre=oCelda.getString()
  if len(nombre)=0 then
 exit for
 end if

oCelda = oHoja.getCellByPosition( Col+1,i ) 
 primerparcial=oCelda.getString()
  if len(primerparcial)=0 then
 primerparcial=""
 end if
 oCelda = oHoja.getCellByPosition( Col+2,i ) 
 final=oCelda.getString()
 if len(final)=0 then
 final=""
 end if

oCelda = oHoja.getCellByPosition( Col+3,i ) 
 ejerciciosclase=oCelda.getString()
  if len(ejerciciosclase)=0 then
 ejerciciosclase=""
 end if
oCelda = oHoja.getCellByPosition( Col+4,i ) 
 notafinal1=oCelda.getString()
  if len(notafinal1)=0 then
 notafinal1=""
 end if
 oCelda = oHoja.getCellByPosition( Col+5,i ) 
 actitud=oCelda.getString()
  if len(actitud)=0 then
 actitud=""
 end if
 oCelda = oHoja.getCellByPosition( Col+6,i ) 
 notafinal=oCelda.getString()
 if len(notafinal)=0 then
 notafinal=""
 end if
  
 

sSQL = "UPDATE ""simix1"" SET ""NOMBRE""='" & nombre & "'," & """primerparcial""" &  "='" & primerparcial   &  "'," &  """final""" &  "='" & final   &  "'," &  """ejerciciosclase""" &  "='" & ejerciciosclase   &  "'," &  """notafinal1""" &  "='" & notafinal1   &  "'," &  """actitud""" &  "='" & actitud   &  "'," &  """notafinal""" &  "='" & notafinal   &  "' WHERE ""ID""=" & j &""


	oDBC = createUnoService("com.sun.star.sdb.DatabaseContext")	
	oBD = oDBC.getByName(sBaseDatos)
	
	oConexion = oBD.getConnection("","")
	oDeclaracion = oConexion.createStatement()
	oDeclaracion.executeUpdate( sSQL)


'luego se pasa al siguiente registro
'y luego se cierra la base
j=j+1   
next i
	oDeclaracion.close()
	oConexion.close()
	oDeclaracion = Nothing
	oConexion = Nothing

End Sub

Gracias por todo

Re: Apuntes de OOo Basic ACTUALIZADO (22-Oct-09)

Publicado: Mié Nov 18, 2009 6:27 pm
por emari2
Aunque yo lo que realmente ando buscando pero no encuentro la solución es a una actuación exactamente igual a esta(mutatis mutandis)

Sub appProb()

On Error GoTo 1

Dim XLTable As TableDef

Set Db = OpenDatabase(mdbFile)
Set XLTable = Db.CreateTableDef("tblProbTemp")

XLTable.Connect = "Excel 5.0;DATABASE=" & xlsFile
XLTable.SourceTableName = "tblXLProb"
Db.TableDefs.Append XLTable

strSQL = "Insert into tblProb Select * FROM tblProbTemp"
Db.Execute strSQL

1:
Err.Clear
On Error Resume Next
Db.TableDefs.Delete "tblProbTemp"
Db.Close

Re: Apuntes de OOo Basic ACTUALIZADO (22-Oct-09)

Publicado: Sab Ene 30, 2010 12:23 am
por atribis
Le he echado un primer vistazo al manual y tiene muy buena pinta, seguro que me ayuda un montón. Muchas gracias por compartirlo :D

Re: Apuntes de OOo Basic ACTUALIZADO (27-Jul-10)

Publicado: Vie Jul 30, 2010 10:44 am
por RMG
Pues nada Mauricio, que disfrutes de tus ganadas vacaciones. Tanto como sufragarte las vacaciones, que más pudiera uno, pero si vienes al viejo continente, concretamente a Valencia, seguro que si te puedo invitar a una paella de las autenticas (cocinada por mi).

Te animo a que el proximo proyecto sea para Base, lo estoy deseando con ansiedad.

Un abrazo, y que pases unas felices vacaciones
Ramón

Re: Apuntes de OOo Basic ACTUALIZADO (27-Jul-10)

Publicado: Vie Jul 30, 2010 6:07 pm
por mauricio
Que conste, ya apunte Valencia como punto obligatorio de paso ahora que vaya a Europa...

Un abrazo.

Re: Apuntes de OOo Basic ACTUALIZADO (27-Jul-10)

Publicado: Sab Jul 31, 2010 10:23 am
por pedrito76
mauricio, no olvide Sevilla, yo soy de allí y es maravillosa, aunque preparate para pasar mucho calor :D

Re: Apuntes de OOo Basic ACTUALIZADO (27-Jul-10)

Publicado: Mié Ago 04, 2010 11:39 am
por pedrito76
por cierto no me puedo descargar la nueva versión, me da un error en la pag 107

Re: Apuntes de OOo Basic ACTUALIZADO (27-Jul-10)

Publicado: Mié Ago 04, 2010 1:47 pm
por mauricio
Un error en la página 107?, prueba a descargarlo de nuevo... http://www.universolibre.org/node/8

Saludos

Re: Apuntes de OOo Basic ACTUALIZADO (27-Jul-10)

Publicado: Mié Ago 04, 2010 5:11 pm
por pedrito76
Gracias ya tengo la nueva versión :super:

Re: Apuntes de OOo Basic ACTUALIZADO (27-Jul-10)

Publicado: Lun Feb 21, 2011 10:20 am
por fcassia
Estimado Mauricio,

¿Podrías por favor subir tus archivos a algún otro host independiente, para tener una copia de seguridad? Todos los links que aparecen en este thread están rotos (los archivos no están más allí).

Si quieres tengo varios proyectos activos en SourceForge.net y, si me das tu permiso, puedo subirlos allí.

Otras opciones son AuthorStream.com, o Google Docs (http://docs.google.com) que ahora permite subir cualquier tipo de archivos (incluso PDF).

Saludos y gracias desde ya.
FC

Re: Apuntes de OOo Basic ACTUALIZADO (27-Jul-10)

Publicado: Lun Feb 21, 2011 3:52 pm
por mauricio
Hola...

Puedes descargarlo desde aquí: http://www.universolibre.org/node/8

Es software libre, puedes subirlo donde creas conveniente...

Saludos

Re: Apuntes de OOo Basic ACTUALIZADO (27-Jul-10)

Publicado: Lun Jul 25, 2011 12:42 pm
por elenitaex5
Hola Mauricio,
Ante todo darte las gracias por la labor que haces en este foro resolviendo todas las dudas y por los manuales que publicas e intentas tener al día.

Sin embargo tengo una pregunta acerca del manual: El punto 4 - El lenguaje OOo Basic muestra los condicionantes y los bucles. Sin embargo dentro de los bucles sólo nos enseña el FOR/NEXT y el DO/LOOP, y dos variables de éste último que son el DO/LOOP WHILE y el DO/LOOP UNTIL. Revisando el Wiki de OpenOffice.org he encontrado un elemento que resolvía una duda que tenía pero sin embargo no estaba en el manual que está publicado en castellano.
En él he encontrado el uso del WHILE/WEND y de DO WHILE/LOOP y DO UNTIL, que no aparecían en el manual y me creaban gran confusión. El enlace donde he encontrado esto es:
http://wiki.services.openoffice.org/wik ... uide/Loops

Lo escribo aquí porque creo que son elementos útiles para tener en el manual castellano y creo que serían de mucha utilidad. Como además el OOo funciona sobretodo mediante la colaboración entre todos los usuarios quería también poner mi granito de arena.

Espero que te haya sido de utilidad Mauricio y que se pueda barajar la posibilidad de ponerlo en el manual.

Muchas gracias por todo

Re: Apuntes de OOo Basic ACTUALIZADO (27-Jul-10)

Publicado: Vie Ene 20, 2012 4:37 pm
por telematico
Muchas gracias por existir esta comunidad, y por haber quien comparta sus conocimientos sin fines de lucro. Yo he sido administrador de redes por casi 8 años, he tomado cursos muy basicos de MSAccess, SQL sever, pero nunca aprendi programacion, solo explotar la informacion y hacer reportes con ella. Y ahora que he probado OO Calc veo que es muy rico en posibilidades, y me he planteado un reto, quiero aprender el Basic de Calc y realizar una pequeña aplicación que me permita llevar un control de cuentas bancarias y sus movimientos, como cheques, depositos y traspasos, con conciliacion de los movimientos e impresion de cheques, deseo introducir los datos a traves de formularios y que Calc solo se use como "base de datos" y no para escribir directamente sobre las celdas.

Yo no se nada del lenguaje de programación de calc, he visto el lenguaje VB 6.0 porque un proveedor nos realizo un programa que usaba access como base de datos, y me doy idea de los objetos, propiedades, eventos..

Mi pregunta concreta, y espero no ofender a nadie o que me regañen diciendo "primero lee y luego pregunta" ¿Este es el manual correcto para aprender desde cero lo necesario y desarrollar esto que quiero hacer, o debo buscar algo mas, es decir es este un buen punto de arranque?

Muchas gracias y felicidades por su sitio

Re: Apuntes de OOo Basic ACTUALIZADO (27-Jul-10)

Publicado: Vie Ene 20, 2012 5:54 pm
por mauricio
Si... es el manual correcto...

Re: Apuntes de OOo Basic ACTUALIZADO (27-Jul-10)

Publicado: Vie Feb 24, 2012 8:37 pm
por cruztineo
Saludos Mauricio he estado observando tus apuntes, podrías por favor tener intervención en el hilo "listas en cascadas" http://user.services.openoffice.org/es/ ... f=4&t=6405, para ver en que me puedes ayudar.