Option Explicit
Sub ImportarDatos()
Dim oDoc As Object
Dim oPaginaDibujo As Object
Dim co1 As Long, co2 As Long
Dim sDatos As String
Dim sRuta As String
Dim oDatos As Object
Dim oCelda As Object
Dim oCursor As Object
Dim mDatos()
'El nombre del archivo con los datos
sDatos = "datos.ods"
'Este documento
oDoc = ThisComponent
'La página de dibujo
oPaginaDibujo = oDoc.getDrawPages.getByIndex(0)
'Construimos la ruta para traer los datos
sRuta = EsteDirectorio( oDoc ) & sDatos
If Dir(sRuta) <> "" Then
'Abrimos los datos
oDatos = AbrirDatos( sRuta, True, "" )
'La celda A1
oCelda = oDatos.getSheets.getByIndex(0).getCellByPosition(0,0)
'Un cursor para movernos
oCursor = oCelda.getSpreadSheet.createCursorByRange( oCelda )
'Expandimos a la región actual
oCursor.collapseToCurrentRegion()
'Traemos los datos
mDatos = oCursor.getDataArray()
'Iteramos entre todos los objetos gráficos de la hoja
For co1 = 0 To oPaginaDibujo.getCount - 1
For co2 = LBound(mDatos) To UBound(mDatos)
'Verificamos si el nombre del elemento esta asignado
If oPaginaDibujo.getByIndex(co1).getName = mDatos(co2)(0) Then
'Si lo esta, establecemos el nombre
oPaginaDibujo.getByIndex(co1).setString( mDatos(co2)(1) )
End If
Next co2
Next co1
'Cerramos los datos
If Not CerrarDatos( oDatos ) Then
MsgBox "Hubo un problema al cerrar los datos"
End If
Else
Msgbox "No existe el archivo de datos"
End If
End Sub
'Devuelve el directorio donde esta el documento pasado
Function EsteDirectorio( Documento ) As String
Dim sTmp As String
Dim mPartes()
sTmp = Documento.getUrl
mPartes = Split( sTmp, "/" )
mPartes( UBound(mPartes) ) = ""
sTmp = Join( mPartes(), "/" )
EsteDirectorio = sTmp
End Function
'Abre un archivo guardado, asume que la ruta existe, se puede abrir oculto y con contraseña
Function AbrirDatos( Ruta As String, Oculto As Boolean, Contra As String ) As Object
Dim sRuta As String
Dim mOpc(1) As New "com.sun.star.beans.PropertyValue"
mOpc(0).Name = "Hidden"
mOpc(0).Value = Oculto
mOpc(1).Name = "Password"
mOpc(1).Value = Contra
AbrirDatos = StarDesktop.loadComponentFromURL( Ruta, "_blank", 0, mOpc() )
End Function
'Cierra un archivo abierto
Function CerrarDatos( Datos ) As Boolean
If Not IsNull( Datos ) Then
Datos.Close(True)
CerrarDatos = True
End If
End Function
'Si lo esta, establecemos el nombre
oPaginaDibujo.getByIndex(co1).setString( mDatos(co2)(1) & Chr(10) & mDatos(co2)(0) )
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados