(@elmau mi respetos y admiración, me he estudiado el libro de arriba hacia abajo y viceversa.)
A lo mejor hacer mi explicación, utilizando X y Y, en vez de Doc1 y Doc2, no fue buena idea.
A continuación archivo de lo que llevo, y estafuncional:
Sub AbriendoFAnzoategui2()
Dim oDoc As Object ’ Doc donde llamo la macro (Consolidado)
Dim sRuta As String
Dim sDato As String
Dim mProps() 'este array no se inicializa pero es necesario definirlo
Dim oDocAbierto As Object '//Documento abierto del ente “FAnzoategui”
Dim oHojas As Object
Dim oHojaAbierta As Object '//Hoja abierta “RESUMEN” del ente “FAnzoategui”
Dim oCelda As Object
Dim oRango As Object
Dim oOrigen As Object
Dim oDestino As Object
Dim oCol As Object
Dim oFil As Object
'**
Dim oHojaOrigen As Object
Dim oHojaDestino As Object
'***
Dim oSel As Object
Dim mDatos
Dim co1 As Long, co2 As Long
Dim Fil As Long, Col As Long
' Acceso al documento desde donde se llama a esta macro
oDoc = ThisComponent
sRuta = ConvertToUrl( "/home/usuario/Escritorio/Mincyt-Katryn/Maquetas-prueba/Maqueta_Sistematizacion/Documentos/A0314 F. Anzoategui - MAYO 2023.ods" )
oDocAbierto = StarDesktop.loadComponentFromURL( sRuta, "_blank", 0, mProps() ) 'Documento abierto en MODO VISIBLE
'Asegurando de que sea una hoja de calculo
If oDocAbierto.supportsService("com.sun.star.sheet.SpreadsheetDocument") Then
'Devolvo solo la hoja que me interesa por su nombre.
oHojaAbierta = oDocAbierto.getSheets.getByName("RESUMEN")
If oHojaAbierta.isProtected Then
MsgBox "La hoja esta protegida"
'Intentamos desprotegerla
sDato = Trim( InputBox( "Introduce contraseña" ) )
oHojaAbierta.unProtect( sDato )
'Verificamos si tuvo éxito la desprotección
If oHojaAbierta.isProtected Then
MsgBox "La contraseña no es correcta"
Else
MsgBox "Hoja desprotegida correctamente"
End If
Else
MsgBox "La hoja NO esta protegida"
End If
Else
MsgBox "No es un documento de hoja de calculo"
End If
' *** Referencia a un rango de celdas
'Referencia a "Frecuencia_A0314"
oRango = oHojaAbierta.getCellRangeByName( "Frecuencia_A0314" )
'Y lo seleccionamos
oDocAbierto.getCurrentController.select(oRango)
'Una vez seleccionado el Rango
oSel = oDocAbierto.getCurrentSelection(oRango)
'**** HICE UNA PRUEBA PARA OBTENER INFORMACION DEL RANGO
'oDir = oSel.getRangeAddress(oRango)
'Construimos el texto informativo
'sTmp = "El rango esta en la hoja: " & oDir.Sheet & Chr(13) & _
'"Columna Inicio: " & oDir.StartColumn & Chr(13) & _
'"Fila Inicio: " & oDir.StartRow & Chr(13) & _
'"Columna Fin: " & oDir.EndColumn & Chr(13) & _
'"Fila Fin: " & oDir.EndRow
' MsgBox sTmp
'***Filas y columnas del rango
'MsgBox "Filas = " & oSel.getRows().getCount() & Chr(13) & _
' "Columnas = " & oSel.getColumns().getCount()
'***Referencia absoluta de un rango
'MsgBox oSel.AbsoluteName
If oSel.getImplementationName() = "ScCellRangeObj" Then
mDatos = oSel.getDataArray() '** Para obtener el contenido sea cual sea
'Obtenemos el número de filas y columnas
Fil = oSel.getRows.getCount() - 1
Col = oSel.getColumns.getCount() - 1
For co1 = 0 To Fil
For co2 = 0 to Col
'Es más claro el acceso a la matriz
MsgBox mDatos (co1) (co2)
'**** Aqui...
Next
Next
End If
MsgBox "Archivo abierto y modificado correctamente, presione Aceptar para guardar y cerrar"
'Vuelvo a proteger la hoja
oHojaAbierta.Protect( sDato )
'Guardo los cambios
oDocAbierto.store()
'Cierro el archivo
oDocAbierto.close(True)
End Sub
'****( Aquí creo que podría empezar a copiar cada celda a su respectiva celda del otro documento, pero sinceramente estoy bloqueada)
'** Pido disculpas si el código esta un poco desordenado. sobre todo con declaración de variables que no estoy usando aún.