Macros de OpenOffice que no funcionan en LibreOffice
Macros de OpenOffice que no funcionan en LibreOffice
Buenas noches a la comunidad.
Aprovechar mi primer mensaje en el foro para dar las gracias a todos pues aunque me acabo de registrar soy asiduo y os sigo con devoción pues encuentro frecuentes respuestas a mis dudas y sobre todo a Mauricio por su dedicación y su estupendo manual de OooBasic.
Quería plantearos primero un problema que me ha surgido desde hace poco y no encuentro respuesta por más que rebusco. En mi lugar de trabajo utilizamos OpenOffice y desde que se instaló abandonando MSOffice utilizo Ooobasic para realizar las macros que me facilitan enormemente el trabajo, pero ahora se va a sustituir OpenOffice por LibreOffice lo cual pensaba que no me iba a ocasionar más problema pero he descubierto que los códigos que antes me funcionaba a la perfección no funcionan al hacerlos correr con LibreOffice. Según me parece deducir de los comentarios que he leido hay diferencias entre el Ooobasic de las dos suites.
El error que da es que las variables que defino como públicas antes de main() cuando corren en LibreOffice me da error en los sub siguientes por no estar declaradas.
Agradecería enormemente una solución. Hace algún tiempo recuerdo haber visto un manual de LibreOffice sobre la base del trabajo de Mauricio pero ahora que lo busco no lo encuentro por parte alguna. ¿Podéis indicarme algún manual en el que apoyarme para detectar las posibles diferencias del lenguaje de macros de las dos suites?
Muchas gracias de antemano.
Aprovechar mi primer mensaje en el foro para dar las gracias a todos pues aunque me acabo de registrar soy asiduo y os sigo con devoción pues encuentro frecuentes respuestas a mis dudas y sobre todo a Mauricio por su dedicación y su estupendo manual de OooBasic.
Quería plantearos primero un problema que me ha surgido desde hace poco y no encuentro respuesta por más que rebusco. En mi lugar de trabajo utilizamos OpenOffice y desde que se instaló abandonando MSOffice utilizo Ooobasic para realizar las macros que me facilitan enormemente el trabajo, pero ahora se va a sustituir OpenOffice por LibreOffice lo cual pensaba que no me iba a ocasionar más problema pero he descubierto que los códigos que antes me funcionaba a la perfección no funcionan al hacerlos correr con LibreOffice. Según me parece deducir de los comentarios que he leido hay diferencias entre el Ooobasic de las dos suites.
El error que da es que las variables que defino como públicas antes de main() cuando corren en LibreOffice me da error en los sub siguientes por no estar declaradas.
Agradecería enormemente una solución. Hace algún tiempo recuerdo haber visto un manual de LibreOffice sobre la base del trabajo de Mauricio pero ahora que lo busco no lo encuentro por parte alguna. ¿Podéis indicarme algún manual en el que apoyarme para detectar las posibles diferencias del lenguaje de macros de las dos suites?
Muchas gracias de antemano.
OpenOffice 4.1 en Xubuntu 14
Re: Macros de OpenOffice que no funcionan en LibreOffice
Hola compañero...
Respecto a Basic, dado que es un lenguaje así, basico, aun no hay muchas diferencias, algunos casos muy concretos pero nada que no se pueda subsanar...
Si anexas un archivo simple donde se vea el problema, intentaremos reproducirlo en nuestros equipos, y claro, si es un fallo de LibreOffice, lo reportamos inmediatamente, que esto es muy importante.
Saludos
Respecto a Basic, dado que es un lenguaje así, basico, aun no hay muchas diferencias, algunos casos muy concretos pero nada que no se pueda subsanar...
Si anexas un archivo simple donde se vea el problema, intentaremos reproducirlo en nuestros equipos, y claro, si es un fallo de LibreOffice, lo reportamos inmediatamente, que esto es muy importante.
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Macros de OpenOffice que no funcionan en LibreOffice
Buenos días Mauricio, muchas gracias por tu pronta respuesta.
Te adjunto pantallazos de los errores que da cuando ejecuto la macro en LibreOffice, tanto al inicio con los enlaces a otro documento como en la ejecución de la macro, ya te comento que en OpenOffice no hay problema alguno, pero con Libre...
Además el código es este:
Este ejemplo que te expongo es una de las macros pero en otras que también he aplicado ocurre errores similares, siempre en Libre y no en Open.
Por cierto en casa trabajo con Xubuntu, pero en el centro de trabajo con Windows 7, no creo que tenga importancia pero por si te sirve de algo.
Mauricio, muchos saludos para ti y para este estupendo foro.
Te adjunto pantallazos de los errores que da cuando ejecuto la macro en LibreOffice, tanto al inicio con los enlaces a otro documento como en la ejecución de la macro, ya te comento que en OpenOffice no hay problema alguno, pero con Libre...
Además el código es este:
Código: Seleccionar todo
Option explicit
Dim oDoc As Object
Dim oDocHist As Object
Dim oHoja As Object
Dim oCelda As Object
'Urls
Dim NomCarpeta As String
Dim NomArchivo As String
Dim FechaConsulta As Date
Dim TablaTurnos As Variant
Dim I As Integer
Dim PosicionFecha As Integer
Dim Temporal As Variant
Dim SwSalirPrograma As Boolean
'PROCEDIMIENTO CARGA NOMBRE SUPERVISORES
' FilaComienzoTurnos = 19 ' Fila donde comienzan los turnos o del primer supervisor
' FilaFinalTurnos = 53 ' Fila donde terminan los turnos o último supervisor
Sub Main()
'Accedemos a la biblioteca básica de BASIC
GlobalScope.BasicLibraries.LoadLibrary( "Tools" )
'Acceso al documento desde donde se llama a esta macro
oDoc = ThisComponent
'Accedemos a una hoja por su nombre
oHoja = oDoc.getSheets.getByName("Horarios")
oHoja.UnProtect( "" )
SwSalirPrograma = False
FechaConsulta = INPUTBOX(" VAMOS A RECUPERAR LOS DATOS DE LOS HORARIOS CORRESPONDIENTES. INTRODUCIR FECHA INICIO DE LA UBICACIÓN. ")
PosicionFecha = 2
oCelda = oHoja.getCellByPosition(PosicionFecha, 7) 'Tomamos la fecha del primer días calculado proceso anterior
oCelda.Value = FechaConsulta
For I = 1 To 6 Step 1
PosicionFecha = PosicionFecha + 1
oCelda = oHoja.getCellByPosition(PosicionFecha, 7) 'Tomamos la fecha del primer días calculado proceso anterior
oCelda.Value = FechaConsulta + I
Next
PosicionFecha = 2
oCelda = oHoja.getCellByPosition(PosicionFecha,96) 'Tomamos la fecha del primer días calculado proceso anterior
oCelda.Value = FechaConsulta
For I = 1 To 6 Step 1
PosicionFecha = PosicionFecha + 1
oCelda = oHoja.getCellByPosition(PosicionFecha, 96) 'Tomamos la fecha del primer días calculado proceso anterior
oCelda.Value = FechaConsulta + I
Next
Call CargaDatosHistoricos
If SwSalirPrograma = True Then
Exit Sub
End If
oHoja = oDoc.getSheets.getByName("Horarios")
oHoja.Protect("")
MsgBox "HEMOS FINALIZADO LA CAPTACIÓN DE LOS DATOS DE LOS HORARIOS DE SUPERVISORES Y TELEASISTENTES"
End Sub
Sub CargaDatosHistoricos
Dim UrlSuper As String
Dim UrlTel As String
Dim I As Integer
Dim ColumnaDia As Integer
Call FormaUrls(UrlSuper, UrlTel)
Call AperturaHistorico(UrlSuper)
If SwSalirPrograma = True Then
Exit Sub
End If
Call CopiaTurnosSuper()
Call AperturaHistorico(UrlTel)
If SwSalirPrograma = True Then
Exit Sub
End If
Call CopiaTurnosTel()
End Sub
Sub PasarAMayusculas(Texto)
Texto = Ucase(Texto)
End Sub
Sub FormaUrls(UrlSuper, UrlTel)
oCelda = oHoja.GetCellByPosition (2 , 1)
NomCarpeta = oCelda.String()
oCelda = oHoja.GetCellByPosition (2 , 2)
NomArchivo = oCelda.String()
UrlSuper = NomCarpeta & "\" & NomArchivo & ".xls"
oCelda = oHoja.GetCellByPosition (2 , 4)
NomCarpeta = oCelda.String()
oCelda = oHoja.GetCellByPosition (2 , 5)
NomArchivo = oCelda.String()
UrlTel = NomCarpeta & "\" & NomArchivo & ".xls"
End Sub
Sub AperturaHistorico(Url)
Dim sRuta As String
Dim mArg()
GlobalScope.BasicLibraries.LoadLibrary( "Tools" )
On Error Goto ManejoError
sRuta = ConvertToUrl(Url)
oDocHist = StarDesktop.loadComponentFromURL( sRuta, "_hidden", 0, mArg() )
Exit Sub
ManejoError: 'Sale la linea del programa y ejecuta codigo ManejoError
'Código para el manejo del error
Select Case Err
Case 0
Case 1
MsgBox "No ha sido posible abrir el Archivo " & Url & _
" puede ser que se encuentre en una ubicación distinta o " & _
"tenga un cambio en su nombre. Abrir la carpeta donde se encuentra " & _
"y comprobar su nombre, en caso de haber algún cambio hay que modificar " & _
"la celda C3 o C6 según corresponda."
SwSalirPrograma = True
Case 53
MsgBox "No se encontró la ruta especificada" & Chr(13) & Chr(13) & sRutaArchivo, 48
SwSalirPrograma = True
Case 91
MsgBox "El Archivo " & NomArchivo & " parece ser que se encuentra bloqueado. Para continuar" & _
" el proceso es imprecisdible cerrarlo y volver a activar el proceso"
SwSalirPrograma = True
Case Else
MsgBox "Error en el procedimiento de apertura del archivo. Ocurrió el error numero: " & Err & Chr(13) & Error & _
Chr(13) & "En la linea " & Erl
SwSalirPrograma = True
End Select
On Error Goto 0
End Sub
Sub CopiaTurnosSuper()
Dim oHoja As Object
Dim oCelda As Object
Dim FechaHor As Date
' CONTADORES HOJA HORARIOS ARCHIVO SUPER
Dim Col As Integer
Dim Fil As Integer
Dim ColumnaDia As Integer
Dim ColumnaUltimoDia As Integer
Dim UltColumnaDia As Integer
Dim FiladeDias As Integer
Dim FilaComienzoTurnos As Integer
Dim FilaFinalTurnos As Integer
Dim TotalColTablaTurnos As Integer
Dim TotalFilTablaTurnos As Integer
' CONTADORES HOJA HORARIOS
Dim ColumnaFinalSuper As Integer
Dim FilaFinalSuper As Integer
Dim I As Integer
Dim J As Integer
Dim Sw As Boolean
Dim Temporal As String
'TABLA DE NOMBRES SUPERVISORES
Dim TablaSuper(0,0) As String
'***********************************PROCEDIMIENTO CARGA NOMBRE SUPERVISORES**********************************************
oHoja = oDocHist.getSheets.getByName("HORARIO")
FilaComienzoTurnos = 19 ' Fila donde comienzan los turnos o del primer supervisor
FilaFinalTurnos = 53 ' Fila donde terminan los turnos o último supervisor
Col = 1
J = -1
For I = FilaComienzoTurnos To FilaFinalTurnos Step 1
J = J + 1
Redim Preserve TablaSuper(J,0)
oCelda = oHoja.getCellByPosition(Col, I)
TablaSuper(J,0) = oCelda.String()
Next
'***********************************PROCEDIMIENTO CARGA DATOS HORARIO SUPERVISORES**********************************************
Col = 0
ColumnaDia = 8 'Columna del día donde empieza el horario
UltColumnaDia = 154 'Columna del último día del horario
FiladeDias = 17 'Fila donde se encuentran las fechas del horario
FilaComienzoTurnos = FilaComienzoTurnos ' Fila donde comienzan los turnos o del primer teleasistente
FilaFinalTurnos = FilaFinalTurnos ' Fila donde terminan los turnos o último teleasistente
Fil = FiladeDias
oHoja = oDocHist.getSheets.getByName("HORARIO")
For ColumnaDia = ColumnaDia To UltColumnaDia Step 1
oCelda = oHoja.getCellByPosition(ColumnaDia, Fil)
FechaHor = oCelda.getString()
If FechaConsulta = FechaHor Then
Exit For
End If
Next
TotalColTablaTurnos = 6
TotalFilTablaTurnos = 250
Redim Preserve TablaTurnos(TotalColTablaTurnos,TotalFilTablaTurnos)
Col = ColumnaDia
ColumnaUltimoDia = Col + 6
TotalColTablaTurnos = 0
For Col = ColumnaDia To ColumnaUltimoDia Step 1
TotalFilTablaTurnos = 0
For Fil = FilaComienzoTurnos To FilaFinalTurnos Step 1
oCelda = oHoja.getCellByPosition(Col, Fil)
'Modificacion Ucase
TablaTurnos(TotalColTablaTurnos,TotalFilTablaTurnos) = UCase(oCelda.getString())
'msgbox TablaTurnos(TotalColTablaTurnos,TotalFilTablaTurnos)
TotalFilTablaTurnos = TotalFilTablaTurnos + 1
Next
TotalColTablaTurnos = TotalColTablaTurnos + 1
Next
TotalFilTablaTurnos = TotalFilTablaTurnos - 1
TotalColTablaTurnos = TotalColTablaTurnos - 1
Call CierraDocumento(oDocHist)
'Acceso al documento desde donde se llama a esta macro
oDoc = ThisComponent
oHoja = oDoc.getSheets.getByName("Horarios")
Col = 2
Fil = 9
ColumnaFinalSuper = Col + 6
FilaFinalSuper = TotalFilTablaTurnos + Fil
I = 0
For Col = Col To ColumnaFinalSuper step 1
J = 0
For Fil = Fil To FilaFinalSuper step 1
oCelda = oHoja.getCellByPosition(Col, Fil)
Temporal = TablaTurnos(I,J)
oCelda.string = TablaTurnos(I,J)
J = J + 1
Next
I = I + 1
Fil = 9
Next
Redim TablaTurnos(0, 0)
Col = 0
I = 8 ' Uno menos
For J = 0 To Ubound(TablaSuper()) Step 1
I = I + 1
oCelda = oHoja.getCellByPosition(Col, I)
oCelda.String() = TablaSuper(J,0)
Next
Redim TablaSuper(0,0)
I = I + 1
oCelda = oHoja.getCellByPosition(Col, I)
oCelda.String() = "NUM TOTAL TEL."
End Sub
Sub CopiaTurnosTel()
Dim oHoja As Object
Dim oCelda As Object
Dim FechaHor As Date
' CONTADORES HOJA HORARIOS ARCHIVO TELEASISTENTES
Dim Col As Integer
Dim Fil As Integer
Dim ColumnaDia As Integer
Dim ColumnaUltimoDia As Integer
Dim UltColumnaDia As Integer
Dim FiladeDias As Integer
Dim FilaComienzoTurnos As Integer
Dim FilaFinalTurnos As Integer
Dim TotalColTablaTurnos As Integer
Dim TotalFilTablaTurnos As Integer
' CONTADORES NOMBRES TELEASISTENTES
Dim FilaUltimoNombreManana As Integer
Dim FilaUltimoNombreTarde As Integer
' CONTADORES HOJA HORARIOS
Dim ColumnaFinalSuper As Integer
Dim FilaFinalSuper As Integer
Dim I As Integer
Dim J As Integer
Dim Sw As Boolean
Dim Temporal As String
Dim TablaTel(0,0) As String
Dim UltRegMan As Integer
'***********************************PROCEDIMIENTO CARGA NOMBRE TEL. MAÑANA**********************************************
oHoja = oDocHist.getSheets.getByName("MAÑANA")
Col = 5
J = -1
For I = 12 To 202 Step 1 'Desde la fila del primer tel hasta la final del último
J = J + 1
Redim Preserve TablaTel(J,0)
oCelda = oHoja.getCellByPosition(Col, I)
TablaTel(J,0) = oCelda.String()
Next
UltRegMan = J
'***********************************PROCEDIMIENTO CARGA NOMBRE TEL. TARDE**********************************************
oHoja = oDocHist.getSheets.getByName("TARDE")
Col = 5
FilaUltimoNombreTarde = 135
For I = 12 To FilaUltimoNombreTarde Step 1
J = J + 1
Redim Preserve TablaTel(J,0)
oCelda = oHoja.getCellByPosition(Col, I)
TablaTel(J,0) = oCelda.String()
Next
'***********************************PROCEDIMIENTO CARGA HORARIO TELEASISTENTES**********************************************
Col = 0
ColumnaDia = 9 'Columna del día donde empieza el horario
UltColumnaDia = 155 'Columna del último día del horario
FiladeDias = 10 'Fila donde se encuentran las fechas del horario
FilaComienzoTurnos = 12 ' Fila donde comienzan los turnos o del primer teleasistente
FilaFinalTurnos = 202 ' Fila donde terminan los turnos o último teleasistente
Fil = FiladeDias
oHoja = oDocHist.getSheets.getByName("MAÑANA")
For ColumnaDia = ColumnaDia To UltColumnaDia Step 1
oCelda = oHoja.getCellByPosition(ColumnaDia, Fil)
FechaHor = oCelda.getString()
If FechaConsulta = FechaHor Then
Exit For
End If
Next
TotalColTablaTurnos = 6
TotalFilTablaTurnos = 250
Redim Preserve TablaTurnos(TotalColTablaTurnos,TotalFilTablaTurnos)
Col = ColumnaDia
ColumnaUltimoDia = Col + 6
TotalColTablaTurnos = 0
For Col = ColumnaDia To ColumnaUltimoDia Step 1
TotalFilTablaTurnos = 0
For Fil = FilaComienzoTurnos To FilaFinalTurnos Step 1
oCelda = oHoja.getCellByPosition(Col, Fil)
TablaTurnos(TotalColTablaTurnos,TotalFilTablaTurnos) = UCase(oCelda.getString())
'msgbox TablaTurnos(TotalColTablaTurnos,TotalFilTablaTurnos)
TotalFilTablaTurnos = TotalFilTablaTurnos + 1
Next
TotalColTablaTurnos = TotalColTablaTurnos + 1
Next
TotalFilTablaTurnos = TotalFilTablaTurnos - 1
TotalColTablaTurnos = TotalColTablaTurnos - 1
'Acceso al documento desde donde se llama a esta macro
oDoc = ThisComponent
oHoja = oDoc.getSheets.getByName("Horarios")
Col = 2
Fil = 99
ColumnaFinalSuper = Col + 6
FilaFinalSuper = TotalFilTablaTurnos + Fil
I = 0
For Col = Col To ColumnaFinalSuper step 1
J = 0
For Fil = Fil To FilaFinalSuper step 1
oCelda = oHoja.getCellByPosition(Col, Fil)
Temporal = TablaTurnos(I,J)
oCelda.string = TablaTurnos(I,J)
J = J + 1
Next
I = I + 1
Fil = 99
Next
Redim TablaTurnos(0, 0)
'***********************************PROCEDIMIENTO CARGA HORARIO TELEASISTENTES DE TARDE**********************************************
oHoja = oDocHist.getSheets.getByName("TARDE")
ColumnaDia = 9 'Columna del día donde empieza el horario
UltColumnaDia = 155 'Columna del último día del horario
FiladeDias = 10 'Fila donde se encuentran las fechas del horario
FilaComienzoTurnos = 12 ' Fila donde comienzan los turnos o del primer teleasistente
FilaFinalTurnos = 135 ' Fila donde terminan los turnos o último teleasistente
Fil = FiladeDias
oHoja = oDocHist.getSheets.getByName("TARDE")
For ColumnaDia = ColumnaDia To UltColumnaDia Step 1
oCelda = oHoja.getCellByPosition(ColumnaDia, Fil)
FechaHor = oCelda.getString()
If FechaConsulta = FechaHor Then
Exit For
End If
Next
TotalColTablaTurnos = 6
TotalFilTablaTurnos = 250
Redim Preserve TablaTurnos(TotalColTablaTurnos,TotalFilTablaTurnos)
Col = ColumnaDia
ColumnaUltimoDia = Col + 6
TotalColTablaTurnos = 0
For Col = ColumnaDia To ColumnaUltimoDia Step 1
TotalFilTablaTurnos = 0
For Fil = FilaComienzoTurnos To FilaFinalTurnos Step 1
oCelda = oHoja.getCellByPosition(Col, Fil)
TablaTurnos(TotalColTablaTurnos,TotalFilTablaTurnos) = Ucase(oCelda.getString())
'msgbox TablaTurnos(TotalColTablaTurnos,TotalFilTablaTurnos)
TotalFilTablaTurnos = TotalFilTablaTurnos + 1
Next
TotalColTablaTurnos = TotalColTablaTurnos + 1
Next
TotalFilTablaTurnos = TotalFilTablaTurnos - 1
TotalColTablaTurnos = TotalColTablaTurnos - 1
'Acceso al documento desde donde se llama a esta macro
oDoc = ThisComponent
oHoja = oDoc.getSheets.getByName("Horarios")
Col = 2
Fil = 289 'OJO, CUANDO SE CAMBIEN CAMBIAR TAMBIÉN DENTRO DEL SIGUIENTE FOR (es la fila en GRIS que divide mañana y tarde)
ColumnaFinalSuper = Col + 6
FilaFinalSuper = TotalFilTablaTurnos + Fil
I = 0
For Col = Col To ColumnaFinalSuper step 1
J = 0
For Fil = Fil To FilaFinalSuper step 1
oCelda = oHoja.getCellByPosition(Col, Fil)
Temporal = TablaTurnos(I,J)
oCelda.string = TablaTurnos(I,J)
J = J + 1
Next
I = I + 1
Fil = 289 'OJO, CUANDO SE CAMBIEN CAMBIAR TAMBIÉN DENTRO DEL SIGUIENTE FOR (es la fila en GRIS que divide mañana y tarde)
Next
Redim TablaTurnos(0, 0)
'***************************************************** PEGADO DE NOMBRES DE TELEASISTENTES EN HOJA HORARIOS *******************************
'Acceso al documento desde donde se llama a esta macro
oDoc = ThisComponent
oHoja = oDoc.getSheets.getByName("Horarios")
' PROCEDIMIENTO PEGADO NOMBRES
Col = 0
I = 98 ' Uno menos donde comenzamos a imprimir los nombres de los teleasistentes de Mañana
For J = 0 To UltRegMan Step 1
I = I + 1
oCelda = oHoja.getCellByPosition(Col, I)
oCelda.String() = TablaTel(J,0)
Next
Col = 0
I = 288 ' Uno menos donde comenzamos a imprimir los nombres de los teleasistentes de Tarde
UltRegMan = UltRegMan + 1
For J = UltRegMan To Ubound(TablaTel()) Step 1
I = I + 1
oCelda = oHoja.getCellByPosition(Col, I)
oCelda.String() = TablaTel(J,0)
Next
Redim TablaTel(0,0)
I = I + 2
oCelda = oHoja.getCellByPosition(Col, I)
oCelda.String() = "NUM TOTAL TEL."
Call CierraDocumento(oDocHist)
End Sub
'************************************************
'************************************************
Sub CierraDocumento(oDocObjeto)
'Cerramos el archivo
oDocObjeto.close(True)
End Sub
Por cierto en casa trabajo con Xubuntu, pero en el centro de trabajo con Windows 7, no creo que tenga importancia pero por si te sirve de algo.
Mauricio, muchos saludos para ti y para este estupendo foro.
OpenOffice 4.1 en Xubuntu 14
Re: Macros de OpenOffice que no funcionan en LibreOffice
No consigo enviarte los pantallazos por el tamaño de las imágenes de todas formas te comento que te adjuntaba pantallazos de cuando inicias el calc tiene enlaces a otro calc y da el error "El siguiente archivo externo no se pudo cargar. Los datos enlazados desde este archivo no se actualizaron".
Los siguientes pantallazos eran para ver el error en la linea 182 "Error de ejecución Basic. Variable de objeto no establecida".
Los siguientes pantallazos eran para ver el error en la linea 182 "Error de ejecución Basic. Variable de objeto no establecida".
OpenOffice 4.1 en Xubuntu 14
- PepeOooSevilla
- Mensajes: 1480
- Registrado: Sab Abr 04, 2009 6:10 pm
- Ubicación: Sevilla (España)
Re: Macros de OpenOffice que no funcionan en LibreOffice
Hola.
La línea 182 es: oHoja = oDocHist.getSheets.getByName("HORARIO")
La variable oHoja está definida a nivel del procedimiento Sub CopiaTurnosSuper(). Sin problema.
La variable oDocHist está definida a nivel de módulo. Sin problema. El error te está indicando que aún no se le ha asignado ningún valor, luego no apunta a ningún documento Calc y, por tanto, no puede devolver la hoja "HORARIO" a la variable oHoja. Revisa la asignación previa de la variable oDocHist.
Saludos cordiales.
La línea 182 es: oHoja = oDocHist.getSheets.getByName("HORARIO")
La variable oHoja está definida a nivel del procedimiento Sub CopiaTurnosSuper(). Sin problema.
La variable oDocHist está definida a nivel de módulo. Sin problema. El error te está indicando que aún no se le ha asignado ningún valor, luego no apunta a ningún documento Calc y, por tanto, no puede devolver la hoja "HORARIO" a la variable oHoja. Revisa la asignación previa de la variable oDocHist.
Saludos cordiales.
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Re: Macros de OpenOffice que no funcionan en LibreOffice
Como ayuda para tus variables, siempre que las declares de forma global, agregales un prefijo, el que tu quieras, para diferenciarlas de las locales, por ejemplo:
Te será más fácil depurar, además, tienes funciones en Basic para validar si una variable esta vacia
Saludos
Código: Seleccionar todo
Dim goHoja As Object
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Re: Macros de OpenOffice que no funcionan en LibreOffice
mddg, si la macro te funciona normalmente en Calc AOO y la misma macro no funciona en Calc LO el mensaje es claro:
Es incompatibilidad entre estos programas.
La macro que subes es muy larga e implica hacer por aca pruebas de ensayo y error para ver lo que está pasando.
Sugiero, si se puede subir el archivo "real" ejemplo.
Saludos.
Es incompatibilidad entre estos programas.
La macro que subes es muy larga e implica hacer por aca pruebas de ensayo y error para ver lo que está pasando.
Sugiero, si se puede subir el archivo "real" ejemplo.
Saludos.
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Re: Macros de OpenOffice que no funcionan en LibreOffice
Buenos días:
Estimados compañeros, me habéis hecho recapacitar y creo que he dado con el problema, pero aun no con la solución.
He buscando la funciones de Basic para validar si una variable esta vacia, aún no he encontrado nada, te agradecería Mauricio me indicases donde buscar, de todas formas sigo buscando en tu libro. Pepe, paisano, tienes razón en que no apunta a ningún documento Calc pues en las instrucciones:
sRuta = ConvertToUrl(Url)
oDocHist = StarDesktop.loadComponentFromURL( sRuta, "_hidden", 0, mArg() )
que se encuentran en el procedimiento Sub AperturaHistorico(Url), Libre no me abre los archivos .xls que le indico que abra, cosa que sí hace Open. Lo he comprobado haciendo copia de los documentos .xls en .ods, de esta forma Libre se ha portado como un campeón y ha realizado el proceso perfectamente.
Conclusión:
En esta organización ahora mismo convivimos con las tres suites (hay compañeros que se niegan a abandonar MSOffice). Con Open no tengo problemas en hacer llamadas a documentos .xls y abrirlos, pero en Libre no se abren, pensaba que es que no los veia abrirse, pero no , no se abren.
¿Pensáis que puede haber alguna razón de que esto ocurra?¿Puede ser algún tipo de incompatibilidad de Libre con MS? Me resulta extraño ya que Open no la tiene.
Saludos, desde la ciudad de la Giralda.
Estimados compañeros, me habéis hecho recapacitar y creo que he dado con el problema, pero aun no con la solución.
He buscando la funciones de Basic para validar si una variable esta vacia, aún no he encontrado nada, te agradecería Mauricio me indicases donde buscar, de todas formas sigo buscando en tu libro. Pepe, paisano, tienes razón en que no apunta a ningún documento Calc pues en las instrucciones:
sRuta = ConvertToUrl(Url)
oDocHist = StarDesktop.loadComponentFromURL( sRuta, "_hidden", 0, mArg() )
que se encuentran en el procedimiento Sub AperturaHistorico(Url), Libre no me abre los archivos .xls que le indico que abra, cosa que sí hace Open. Lo he comprobado haciendo copia de los documentos .xls en .ods, de esta forma Libre se ha portado como un campeón y ha realizado el proceso perfectamente.
Conclusión:
En esta organización ahora mismo convivimos con las tres suites (hay compañeros que se niegan a abandonar MSOffice). Con Open no tengo problemas en hacer llamadas a documentos .xls y abrirlos, pero en Libre no se abren, pensaba que es que no los veia abrirse, pero no , no se abren.
¿Pensáis que puede haber alguna razón de que esto ocurra?¿Puede ser algún tipo de incompatibilidad de Libre con MS? Me resulta extraño ya que Open no la tiene.
Saludos, desde la ciudad de la Giralda.
OpenOffice 4.1 en Xubuntu 14
Re: Macros de OpenOffice que no funcionan en LibreOffice
Para las variables usa: https://help.libreoffice.org/Basic/Vari ... Runtime.5D
si que los abre sin problemas...
si que los abre sin problemas...
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
- PepeOooSevilla
- Mensajes: 1480
- Registrado: Sab Abr 04, 2009 6:10 pm
- Ubicación: Sevilla (España)
Re: Macros de OpenOffice que no funcionan en LibreOffice
Hola.
Si lo comentado por mauricio no te funcionara (puede que la versión que tienes instalada tuviera un bug que fue corregido en una versión posterior. En la versión LibreOffice 5.1.6 estable funciona sin problemas), prueba con:
Saludos cordiales.
Conozco muy bien esa problemática.mddg escribió:En esta organización ahora mismo convivimos con las tres suites (hay compañeros que se niegan a abandonar MSOffice). Con Open no tengo problemas en hacer llamadas a documentos .xls y abrirlos, pero en Libre no se abren, pensaba que es que no los veia abrirse, pero no, no se abren.
Si lo comentado por mauricio no te funcionara (puede que la versión que tienes instalada tuviera un bug que fue corregido en una versión posterior. En la versión LibreOffice 5.1.6 estable funciona sin problemas), prueba con:
Código: Seleccionar todo
Option Explicit
Sub AbrirXLS
Dim DocCalc As Object
Dim ArchivoXLS As String
Dim Args(0) As New com.sun.star.beans.PropertyValue
Args(0).Name = "FilterName"
Args(0).Value = "MS Excel 97"
ArchivoXLS = ConvertToURL("RUTA_AL_ARCHIVO.xls")
DocCalc = StarDesktop.loadComponentFromURL(ArchivoXLS, "_blank", 0, Args())
End Sub
LibreOffice 6.4.6. Windows 10. Java 8 rev. 261 (64 bits)
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Por favor, utiliza el Foro para tus consultas, no los mensajes privados
Si usas OpenOffice/LibreOffice trabaja y guarda en ODT, ODS, ODP, ... Y haz copias de seguridad.
Re: Macros de OpenOffice que no funcionan en LibreOffice
Estimados compañeros:
He aplicado los consejos de Mauricio y de Pepe sin resultado pero he descubierto que si en vez de llamar a ese .xls llamo a otro .xls, Libre sí lo abre sin problemas por lo que me ha dado de pensar que es el archivo .xls el que tiene el problema no en si Libre.
El archivo tiene una restricción de solo lectura por lo que he pensado que puede ser este el posible problema, así que esta mañana he abordado al compañero propietario del archivo y me comenta:
- que el no le tiene puesta ninguna restricción de solo lectura, pero el departamento de informática al econtrarnos trabajando en red, es el que le ha asignado a la carpeta completa el atributo de solo lectura.
- que él que trabaja con Excell y tiene realizada sus macros en VBA tiene el mismo problema, para que le funcionen las macros tiene que tener el libro abierto y seleccionada la hoja correspondiente por que si no, la macro no hace nada de nada a pesar de que el le indique el libro y la hoja correspondiente.
Le he enseñado como lo hago con Open y se ha quedado a cuadros. La verdad que me desconcierta el tema, pero cada vez tengo más claro que son temas de los permisos de la red, pero no entiendo la diferencia entre suites más cuando son tan parecidas.
Intentaré hablar con algún compañero de informática a ver si me orienta. Estoy muy agradecido por vuestro interés y por lo que estoy aprendiendo, que ya veo que me hace falta y mucho.
Saludos.
He aplicado los consejos de Mauricio y de Pepe sin resultado pero he descubierto que si en vez de llamar a ese .xls llamo a otro .xls, Libre sí lo abre sin problemas por lo que me ha dado de pensar que es el archivo .xls el que tiene el problema no en si Libre.
El archivo tiene una restricción de solo lectura por lo que he pensado que puede ser este el posible problema, así que esta mañana he abordado al compañero propietario del archivo y me comenta:
- que el no le tiene puesta ninguna restricción de solo lectura, pero el departamento de informática al econtrarnos trabajando en red, es el que le ha asignado a la carpeta completa el atributo de solo lectura.
- que él que trabaja con Excell y tiene realizada sus macros en VBA tiene el mismo problema, para que le funcionen las macros tiene que tener el libro abierto y seleccionada la hoja correspondiente por que si no, la macro no hace nada de nada a pesar de que el le indique el libro y la hoja correspondiente.
Le he enseñado como lo hago con Open y se ha quedado a cuadros. La verdad que me desconcierta el tema, pero cada vez tengo más claro que son temas de los permisos de la red, pero no entiendo la diferencia entre suites más cuando son tan parecidas.
Intentaré hablar con algún compañero de informática a ver si me orienta. Estoy muy agradecido por vuestro interés y por lo que estoy aprendiendo, que ya veo que me hace falta y mucho.
Saludos.
OpenOffice 4.1 en Xubuntu 14
Re: Macros de OpenOffice que no funcionan en LibreOffice
Se puede validar perfectamente si se tienen permisos de lectura en el archivo especificado... pero... ese es otro tema, creo que el problema original de este tema, esta resuelto...
Saludos
Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro