OpenOffice - Error en 1 línea de macro al ejecutar ods con Android

 
Vista:
Imágen de perfil de Tito
Val: 1
Ha disminuido 1 puesto en OpenOffice (en relación al último mes)
Gráfica de OpenOffice

Error en 1 línea de macro al ejecutar ods con Android

Publicado por Tito (1 intervención) el 01/08/2016 10:02:04
Dado que no sé programar para Android, he creado un programa (como macro) dentro de un fichero ods (para ejecutar con la apk AndrOpen, el equivalente de OpenOffice para Linux y Windows).
Cuando he necesitado algún programa para ejecutarlo con Android he recurrido a ese método con éxito (ejecutar un fichero con macro creado con AndrOpen).
Pero en el caso que ahora me ocupa se produce un error en la línea que pretende abrir un fichero (a pesar de que la ruta es correcta, el fichero existe y no está con permisos especiales). Dicha línea la he resaltado usando formato "negrita".
El mismo fichero ods que contiene dicha macro funciona perfectamente corriendo bajo Windows (con OpenOffice), con simplemente cambiar la ruta (indicando, en vez de la ruta del móvil una ruta válida en el pc).
Transcribo a continuación el código. Adjunto también ese fichero ods que, si se ejecuta, pide una palabra a buscar y pulsando el botón de búsqueda muestra una lista con todas las líneas que contienen la palabra, tras buscar en una serie de líneas contenidas en el fichero que se lee (además de que elimina usa serie de caracteres especiales que contienen dichas líneas) :

Se intenta acceder al fichero Tasks.txt con Open ... For Input ...
El error que notifica es :
"Error en tiempo de ejecución de BASIC. Error de E/S del dispositivo. Aceptar"
El código de la macro es :

REM ***** BASIC *****
Sub Main
HojaActiva = ThisComponent.getCurrentController.getActiveSheet()
Dim Celda As Object
Dim todo as string
Dim aaa as string
Dim Fila as Long, Columna as Long
Dim iNumero As Integer
Dim sLinea As String
Dim aArchivo As String
Dim sMensaje as String
dim donde as integer
aArchivo = "\mnt\sdcard\exportTasks\tasks.txt"
iNumero = Freefile
Columna = 1
Fila = 2
todo = ""
Open aArchivo For Input As iNumero
While not eof(iNumero)
Line Input #iNumero, sLinea
Celda = HojaActiva.getCellByPosition(Columna,Fila)
sMensaje = Celda.getString
sMensaje=rtrim$(sMensaje)
donde=instr(1,sLinea,sMensaje)
IF donde<>0 and mid$(sLinea,26,1) <> "1" then
donde=instr(8,sLinea,"###")
aaa=left$(sLinea,donde-1) & right$(sLinea,len(sLinea)-donde-34+1)
aaa=left$(aaa,len(aaa)-19)
donde=instr(1,sLinea,"###")
aaa=right$(aaa,len(aaa)-donde-2)
aaa=right$(aaa,2) & "/" & mid$(aaa,len(aaa)-4,2) & "/" & mid$(aaa,len(aaa)-9,4) & " " & left$(aaa,len(aaa)-10)
todo = todo & aaa & chr$(13)
end if
wend
Close #iNumero
msgbox todo
End Sub

Adjunto el fichero en cuestión (que, según lo dicho, puede probarse bajo Windows sin problema, cambiando la ruta "mnt/sdcard/..." a una ruta del ordenador.

Agradeceré comentarios acerca del motivo del error, pues si logro obviarlo todo lo demás funciona perfectamente.
Muchas gracias a tod@s por vuestras valiosas aportaciones.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Error en 1 línea de macro al ejecutar ods con Android

Publicado por Anonymous (1 intervención) el 18/04/2018 11:37:51
Se me ocurre una pequeña comprobación, en lugar de usar las barras de directorio de Windows "\", usar las de Linux/Androd "/" en la ruta.

Windows:
aArchivo = "\mnt\sdcard\exportTasks\tasks.txt"

Android:
aArchivo = "/mnt/sdcard/exportTasks/tasks.txt"

Igual es solo ese despiste; espero no ofender a nadie, a pesar de parecer algo tan obvio; otro tema que también suele afectar mucho en las rutas, es la distinción entre mayúsculas y minúsculas que si hace Linux y Android pero que Windows no hace.

Nota: Lo obvio suele ser lo que más nos cuesta a todos detectar, a mi incluido; y con el tema de los separadores de ruta suele costar muchísimo caer en la cuenta.

P.D.: Contesto cuando lo he visto, ya se que la pregunta es de hace varios añitos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar