Soy nuevo en el foro, y hace unos días (5 aproximadamente) que empecé a usar OpenOffice (del cual no conozco mucho).
Tengo la idea de hacer un macro que ayude a unos compañeros en el trabajo, sin embargo no conozco nada acerca de programación en Basic (ooo Basic).
Descargué el Manual de Mauricio Baeza y traté de "hacer algo por mi cuenta" pero llegué a un punto donde estoy estancado, y humildemente quisiera pedirles ayuda.
Mi idea es la siguiente: (Dividida en Pasos).
1- Crear un control de Arbol que me permita seleccionar una carpeta.
2- Abrir todos los archivos ODS contenidos en esa carpeta.
3- Copiar determinadas columnas de esos archivos y consolidarlos en un solo ODS.
4- Guardar el archivo consolidado.
Ahorita no he podido cumplir ni siquiera el paso uno (voy paso a paso sin prisa), y el problema es el siguiente:
El control de árbol se ejecuta correctamente, me muestra la carpeta de raiz y me muestra las carpetas que hay dentro de la raiz, pero no puedo ir más abajo (subcarpetas)....
Según entiendo tendría que crear un nodo hijo y ligarlo al nodo padre, lo he intentado de varias formas sin éxito alguno.
Código: Seleccionar todo
REM ***** BASIC *****
'Sentencia de Macro.
Sub EjecutarMiDialogo1()
'Variables para el dialogo que usará el usuario.
Dim Cuadro_Dialogo As Object
Dim Explorador As Object
Dim modelo_Explorador As Object
'Variables para establecer la ruta.
Dim ruta_Raiz As Object 'es la ruta origen, desde aquí el usuario podrá seleccionar cualquier carpeta.
Dim nodo_Padre As Object 'Será el primer nivel del control.
Dim nodo_Hijo as Object 'Será el segundo nivel del control.
Dim ruta As String 'Ruta que alimentará el origen del control.
'Se realiza la carga de la librería standard.
DialogLibraries.LoadLibrary( "Standard" )
'Cargamos el cuadro de diálogo en memoria
Cuadro_Dialogo = CreateUnoDialog( DialogLibraries.Standard.getByName("Dialogo") )
'Se obtiene el control creado en el diálogo.
Explorador = Cuadro_Dialogo.getControl("TreeControl1")
'Servicio para controlar el contenido del control
modelo_Explorador = createUnoService("com.sun.star.awt.tree.MutableTreeDataModel")
'La ruta origen para explorar directorios.
ruta = "C:\Users\uidcr01407\Desktop\"
'Si la ruta no es vacía deberá recorrer las carpetas y mostrarlas en el control.
If Dir(ruta) <> "" Then
'Creamos el nodo raíz
ruta_Raiz = modelo_Explorador.createNode( ruta, True )
'Establecemos el nodo raíz
modelo_Explorador.setRoot( ruta_Raiz )
'Buscamos el primer directorio (16) (esto lo vi en el libro de Mauricio, pero no sé que
'significa el 16, probé cambiarlo por true y es el mismo resultado.
ruta = Dir(ruta,16)
'Cuando no haya más directorios ruta estará vacía
Do While ruta <> ""
Select Case Left(ruta,1)
'Nos saltamos los ocultos
Case ".", ".."
Case Else
nodo_Padre = modelo_Explorador.createNode( ruta, True )
ruta_Raiz.appendChild(nodo_Padre)
'Intento crear un nodo hijo.
'************* Es aquí donde tengo el problema. *************
nodo_Hijo = modelo_Explorador.createNode(nodo_Padre,True)
nodo_Padre.appendChild(nodo_Hijo)
'************* ********************************* *************
End Select
'Siguiente directorio
ruta = Dir
Loop
Explorador.getModel.DataModel = modelo_Explorador
End If
'Se ejecuta el dialogo.
Cuadro_Dialogo.execute()
If Explorador.getSelectionCount > 0 Then
'Se muestra el nodo seleccionado.
MsgBox Explorador.getSelection.getDisplayValue
End If
'Se libera el dialogo.
Cuadro_Dialogo.dispose()
End Sub
Saludos