[RESUELTO] Abrir archivo con boton en formulario

Discute sobre las herramientas de la base de datos
Responder
MAJISE
Mensajes: 6
Registrado: Jue Oct 28, 2010 4:32 pm

[RESUELTO] Abrir archivo con boton en formulario

Mensaje por MAJISE »

Buenos días, tengo una base de datos sobre documentos que se manejan en mi oficina, en uno de los formularios coloqué un botón para abrir un archivo .pdf que corresponde al documento escaneado. La macro que utilizo es la siguiente:

Public Sub MostrarPdf
Dim NextFile As String
Dim AllFiles As String
dim dirnom as string
dim referencia as string
dim ref as string
dim reflargo as integer
dim refarch as string
dim dirsep as string
dim pdfarch as string
dim i as integer
dim doc as object
dim sys
dim sruta as string
dim encontrado as string

encontrado = ""
set doc=ThisComponent
msgbox doc.geturl()
referencia = " 720/11" rem Se debe cambiar por el valor en el campo correspondiente del formulario


'cambiar el separador en la referencia y lo guardo en refarch
ref=referencia
reflargo=len(ref)
for i=1 to reflargo
if mid(ref,i,1)="/" then
refarch=refarch & "-"
else
refarch=refarch & mid(ref,i,1)
endif
next
refarch=trim(refarch)
rem msgbox ref & " x " & reflargo & " x " & refarch

'obtener el directorio (carpeta) actual
GlobalScope.BasicLibraries.LoadLibrary("Tools")
dirsep="/"
msgbox doc.geturl()
dirnom=DirectoryNameOutOfPath(doc.geturl(),dirsep)
dirnom=dirnom & dirsep & "Resoluciones"& dirsep
rem msgbox "nombre del directorio con pdf's: " & dirnom


'buscar el archivo .pdf correspondiente
AllFiles = ""
NextFile = Dir(dirnom, 0)
While NextFile <> ""
if NextFile >= ("res " & refarch) and NextFile <= ("res " & refarch & "z") then
pdfarch = dirnom & NextFile
rem msgbox "Se abrira el archivo : " & pdfarch
'abrir el archivo pdf correspondiente
sys = CreateUnoService("com.sun.star.system.SystemShellExecute")
sRuta = pdfarch
sys.execute( sRuta, "", 0)
encontrado = "SI"
endif
AllFiles = AllFiles & Chr(13) & NextFile
NextFile = Dir
Wend
if encontrado<>"SI" then
msgbox "No se encontró un pdf para: " & Trim(referencia)
endif

End Sub

Si ejecuto la macro funciona pero al asignarla al boton me aparece Private:Object, y no funciona.
También necesito que donde dice (referencia = " 720/11") este valor debe hacer referencia a un texbox del formulario para que sea variable según el registro que este.

Muchas Gracias
Última edición por MAJISE el Mié Jul 13, 2011 3:34 pm, editado 1 vez en total.
OpenOffice 3.2
Windows XP Profesional
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Abrir archivo con boton en formulario

Mensaje por RMG »

Hola,

Mira este enlace, quizás te ayude.

http://user.services.openoffice.org/es/ ... =33&t=4693

Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
MAJISE
Mensajes: 6
Registrado: Jue Oct 28, 2010 4:32 pm

Re: Abrir archivo con boton en formulario

Mensaje por MAJISE »

Hola, este enlace ya lo había visto, pero no es esactamente lo que necesito, el listar las URL me es bastante complicado ya que trabajo con un número importante de registros. Lo que necesito es que la macro que hice y copie en el mensaje me funcione al asignarla a un boton en el formulario.
Muchas gracias
Probando, le encontré otra dificultad, los archivos seleccionados me los abre con write y al ser .pdf no los veo correctamente
OpenOffice 3.2
Windows XP Profesional
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: Abrir archivo con boton en formulario

Mensaje por RMG »

Hola,

Mira este ejemplo, si es lo que necesitas y resuelve el problema acuerdate de ponerlo como resuelto. Para probar create los archivos .pdf segun los nombres de los campos, y para que los abra Adobe, en Abrir con.. eliges programa y pones predeterminado.

Saludos
Adjuntos
AbrirDocumentos.rar
(13.56 KiB) Descargado 1035 veces
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Abrir archivo con boton en formulario

Mensaje por mauricio »

Hola...

Complementando la excelente respuesta de mi amigo Ramon, con la siguiente macro, tomamos el nombre de control como mencionas que lo tienes en el formato 999/99 y lo convertimos al formato 999-99, además le agregamos el nombre del directorio resoluciones, ten cuidado con los espacios:

Código: Seleccionar todo

Sub AbrirArchivo( Evento )
Dim sDirectorioActual As String
Dim mTmp()
Dim sRuta As String
Dim sArchivo As String
Dim txtArchivo As Object
Dim abrir

	'El control donde esta el nombre del archivo, tienes que usar el nombre correcto del control
	txtArchivo = Evento.Source.Model.Parent.getByName("Texto")
	sArchivo = txtArchivo.Text 
	sArchivo = Join(Split(sArchivo,"/"),"-")
	sArchivo = "resoluciones/ref "  & sArchivo & " - COMENTARIO SOBRE LA RESOLUCION.pdf"
	sDirectorioActual = ThisDatabaseDocument.getURL
	mTmp = Split( sDirectorioActual, "/" )
	mTmp(UBound(mTmp)) = sArchivo
	sRuta = Join( mTmp, "/" )
	'busca el archivo .pdf correspondiente
	If FileExists(sRuta) Then
 		'abre el archivo si lo encuentra 
		abrir = CreateUnoService("com.sun.star.system.SystemShellExecute")
 		abrir.execute( sRuta, "", 0)
 	Else
 		'no encuentra el archivo
 		Msgbox "No existe el archivo " & sArchivo
 	End If
 	
End Sub
Por favor, si esto responde tu pregunta, edita el primer mensaje de este hilo y agrega al principio del título la etiqueta [RESUELTO], adicionalmente puedes marcar el icono de la tilde verde, de esta forma conseguiremos un foro más ordenado.

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
MAJISE
Mensajes: 6
Registrado: Jue Oct 28, 2010 4:32 pm

Re: Abrir archivo con boton en formulario

Mensaje por MAJISE »

Muchísimas gracias por los aportes, :bravo:

Les dejo como quedó la macro, funcionando perfectamente, asignada al botón del formulario

Option Explicit

Sub MostrarPdf (Evento)

Dim sArchivoSiguiente As String
Dim sTodosLosArchivos As String
Dim sDirNom as string
Dim sArchivoPdf as string
Dim sRuta as string
Dim encontrado as string
Dim sDirectorioActual As String
Dim mTmp()
Dim sArchivo As String
Dim txtArchivo As Object
Dim abrir
Dim sNombre as string
Dim sys


sDirectorioActual = ThisDatabaseDocument.getURL
mTmp = Split( sDirectorioActual, "/" )
mTmp(UBound(mTmp)) = ""
sDirectorioActual = Join( mTmp, "/" )
'El control donde esta el nombre del archivo
txtArchivo = Evento.Source.Model.Parent.getByName("TextBox13")

sNombre = txtArchivo.text
sNombre = Join(Split(sNombre,"/"),"-")
rem msgbox sNombre
sDirectorioActual = sDirectorioActual & "Resoluciones/"
rem msgbox sDirectorioActual
encontrado = ""

'buscar el archivo .pdf correspondiente
sTodosLosArchivos = ""
sArchivoSiguiente = Dir(sDirectorioActual, 0)
While sArchivoSiguiente <> ""
if sArchivoSiguiente >= ("res " & sNombre) and sArchivoSiguiente <= ("res " & sNombre & "z") then
sArchivoPdf = sDirectorioActual & sArchivoSiguiente
rem msgbox "Se abrira el archivo : " & sArchivoPdf
'abrir el archivo pdf correspondiente
sys = CreateUnoService("com.sun.star.system.SystemShellExecute")
sRuta = sArchivoPdf
sys.execute( sRuta, "", 0)
encontrado = "SI"
endif
sTodosLosArchivos = sTodosLosArchivos & Chr(13) & sArchivoSiguiente
sArchivoSiguiente = Dir

wend
if encontrado<>"SI" then
msgbox "No se encontró un archivo .pdf para la resolución: " & Trim(txtArchivo.text)
endif

end sub
OpenOffice 3.2
Windows XP Profesional
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: [RESUELTO] Abrir archivo con boton en formulario

Mensaje por mauricio »

Hola...

Solo como nota, si ya tienes el nombre del archivo construido correctamente y este siempre esta en el mismo directorio, no tienes que buscarlo, solo asegurarte de que existe con FileExist como ya te mostro mi amigo Ramon.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Catar
Mensajes: 29
Registrado: Vie Jun 22, 2012 5:01 pm

Re: [RESUELTO] Abrir archivo con boton en formulario

Mensaje por Catar »

Hola,

Estoy usando esta macro para abrir un archivo pdf. Comentar que cada fila de datos, contiene un archivo distinto con un nombre distinto aunque todos los archivos estan ubicados en la misma carpeta.

Estoy mirando de adaptar la macro, pero ando un poco pez y no hay forma. Sale siempre el mensaje no hay archivo1.pdf (o el que sea). Puede ser porque no encuentra la ruta donde están guardados los archivos? ¿En que parte de la macro debo insertar la ruta?
(mTmp = Split( sDirectorioActual, "/" ) ------------ aquí??
mTmp(UBound(mTmp)) = "" -------------------------- aquí??
sDirectorioActual = Join( mTmp, "/" ) ------------ o aquí??
'El control donde esta el nombre del archivo




REM ***** BASIC *****

Option Explicit

Sub AbrirArchivo( Evento )
Dim sDirectorioActual As String
Dim mTmp()
Dim sRuta As String
Dim sArchivo As String
Dim txtArchivo As Object
Dim abrir
sDirectorioActual = ThisDatabaseDocument.getURL
mTmp = Split( sDirectorioActual, "/" )
mTmp(UBound(mTmp)) = ""
sDirectorioActual = Join( mTmp, "/" )
'El control donde esta el nombre del archivo
txtArchivo = Evento.Source.Model.Parent.getByName("Texto")
'Obtenemos el nombre del archivo
sArchivo = txtArchivo.Text & ".pdf"
'Contruimos la ruta completa del archivo
sRuta = sDirectorioActual & sArchivo
'busca el archivo .pdf correspondiente
If FileExists(sRuta) Then
'abre el archivo si lo encuentra
abrir = CreateUnoService("com.sun.star.system.SystemShellExecute")
abrir.execute( sRuta, "", 0)
Else
'no encuentra el archivo
Print "No existe el archivo " & sArchivo
End If
End Sub



Un saludo,
Ubuntu 12.04 LTS Precise Pangolin
LibreOffice 3.5.4.2
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: [RESUELTO] Abrir archivo con boton en formulario

Mensaje por SLV-es »

Hola. Sustituye...
Catar escribió: sDirectorioActual = ThisDatabaseDocument.getURL
mTmp = Split( sDirectorioActual, "/" )
mTmp(UBound(mTmp)) = ""
sDirectorioActual = Join( mTmp, "/" )
por

Código: Seleccionar todo

        sDirectorioActual = "LaCarpeta/Donde/Guardo/LosPDF/"
Cuidado con el nombre de la carpeta. Tiene que estar especificada en modo URL.
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
Catar
Mensajes: 29
Registrado: Vie Jun 22, 2012 5:01 pm

Re: [RESUELTO] Abrir archivo con boton en formulario

Mensaje por Catar »

La macro ha quedado tal que así:

Si bien al darle al botón aparece que no encuentra el archivo1, y si ejecuto la macro (Herramientas-macros-ejecutar macro) aparece el mensaje:

Se ha producido un error de marco de programación al ejecutar el comando Standard.Module3. AbrirArchivo escrito en Basic. Mensaje: wrong number of parameters.



REM ***** BASIC *****

Option Explicit

Sub AbrirArchivo( Evento )
Dim sDirectorioActual As String
Dim mTmp()
Dim sRuta As String
Dim sArchivo As String
Dim txtArchivo As Object
Dim abrir
sDirectorioActual = "home/fernando/Tesorería/facturas/Facturas2012"
'El control donde esta el nombre del archivo
txtArchivo = Evento.Source.Model.Parent.getByName("Texto")
'Obtenemos el nombre del archivo
sArchivo = txtArchivo.Text & ".pdf"
'Contruimos la ruta completa del archivo
sRuta = sDirectorioActual & sArchivo
'busca el archivo .pdf correspondiente
If FileExists(sRuta) Then
'abre el archivo si lo encuentra
abrir = CreateUnoService("com.sun.star.system.SystemShellExecute")
abrir.execute( sRuta, "", 0)
Else
'no encuentra el archivo
Print "No existe el archivo " & sArchivo
End If
End Sub
Ubuntu 12.04 LTS Precise Pangolin
LibreOffice 3.5.4.2
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: [RESUELTO] Abrir archivo con boton en formulario

Mensaje por mauricio »

Catar escribió:Si bien al darle al botón aparece que no encuentra el archivo1, y si ejecuto la macro (Herramientas-macros-ejecutar macro) aparece el mensaje:

Se ha producido un error de marco de programación al ejecutar el comando Standard.Module3. AbrirArchivo escrito en Basic. Mensaje: wrong number of parameters.
Sub AbrirArchivo( Evento )

Las macros que llevan parametros, como la tuya, no puedes ejecutarlas desde el menú Herramientas-macros-ejecutar macro, precisamente por que no puedes pasarle los parametros que necesita para trabajar...

Para que abra tu archivo, mira la ultima línea de la respuesta que te dio mi amigo Salva, ahí esta la solución.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
SLV-es
Mensajes: 4894
Registrado: Jue Ago 26, 2010 1:25 am
Ubicación: España
Contactar:

Re: [RESUELTO] Abrir archivo con boton en formulario

Mensaje por SLV-es »

Catar escribió: sDirectorioActual = "home/fernando/Tesorería/facturas/Facturas2012"
Debería ser (falta una / al final)

Código: Seleccionar todo

	sDirectorioActual = "home/fernando/Tesorería/facturas/Facturas2012/"
No conozco en Linux cómo es la ruta completa de un archivo.
En Windows, por ejemplo, sería "H:/directorio/subdirectorio/archivo.pdf".
Creo que en Linux es "/home/fernando/..........", con lo que posiblemente te faltaría también una / al principio.
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
Catar
Mensajes: 29
Registrado: Vie Jun 22, 2012 5:01 pm

Re: [RESUELTO] Abrir archivo con boton en formulario

Mensaje por Catar »

Hola de nuevo,

He modificado la ruta pero, al darle al botón no hace nada, no hay ningún mensaje de archivo no encontrado ni nada de nada... ¿A que se puede deber?
La macro ha quedado tal cual. Puede deberse a que tengo instalado adobe como lector pdf (me hacia falta para unos documentos).

REM ***** BASIC *****

Option Explicit

Sub AbrirArchivo( Evento )
Dim sDirectorioActual As String
Dim mTmp()
Dim sRuta As String
Dim sArchivo As String
Dim txtArchivo As Object
Dim abrir
sDirectorioActual = "/home/fernando/Tesorería/facturas/Facturas2012/"
'El control donde esta el nombre del archivo
txtArchivo = Evento.Source.Model.Parent.getByName("Texto")
'Obtenemos el nombre del archivo
sArchivo = txtArchivo.Text & ".pdf"
'Contruimos la ruta completa del archivo
sRuta = sDirectorioActual & sArchivo
'busca el archivo .pdf correspondiente
If FileExists(sRuta) Then
'abre el archivo si lo encuentra
abrir = CreateUnoService("com.sun.star.system.SystemShellExecute")
abrir.execute( sRuta, "", 0)
Else
'no encuentra el archivo
Print "No existe el archivo " & sArchivo
End If
End Sub
Ubuntu 12.04 LTS Precise Pangolin
LibreOffice 3.5.4.2
RMG
Mensajes: 3879
Registrado: Mar Nov 17, 2009 6:59 am
Ubicación: Valencia - España

Re: [RESUELTO] Abrir archivo con boton en formulario

Mensaje por RMG »

Hola,

La macro en W7 funciona, en sDirectorioActual he puesto el mio despues en sArchivo he puesto el nombre de mi archivo .pdf y Adobe lo abre bien.

Saludos
OpenOffice 4.1.15 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Catar
Mensajes: 29
Registrado: Vie Jun 22, 2012 5:01 pm

Re: [RESUELTO] Abrir archivo con boton en formulario

Mensaje por Catar »

utilizo ubuntu 12.04.

Tenía entendido que la macro cogía el nombre del archivo que había en el campo anterior. ¿es así o voy equivocado? para poner el nombre del archivo yo mismo y mirar que no falle por ahi debería poner: (cada fila tiene un archivo distinto pero pruebo por descartar)
sArchivo = Archivo1".pdf"

Le doy al botóny no hace nada, a ver si puedo solucionarlo...
Ubuntu 12.04 LTS Precise Pangolin
LibreOffice 3.5.4.2
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: [RESUELTO] Abrir archivo con boton en formulario

Mensaje por mauricio »

Ya te lo comentaron más arriba:

Cuidado con el nombre de la carpeta tiene que estar especificada en modo URL, para saber como es esto: http://user.services.openoffice.org/es/ ... =50&t=1545
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Catar
Mensajes: 29
Registrado: Vie Jun 22, 2012 5:01 pm

Re: [RESUELTO] Abrir archivo con boton en formulario

Mensaje por Catar »

Lo tenia de la siguiente forma

sDirectorioActual = "/home/fernando/Tesorería/facturas/Facturas2012/"
y

siendo URL debería ser así?

sDirectorioActual = "http://home/fernando/Tesorería/facturas/Facturas2012/"

Me salta el error de "No existe el Archivo1", tarda un poco en dar el mensaje, cosa que antes no pasaba, con lo cual parece que vaya a la carpeta y lo busque.....¿? Esto me tiene perdido, me hago pesado pero es que me hace falta.
Ubuntu 12.04 LTS Precise Pangolin
LibreOffice 3.5.4.2
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: [RESUELTO] Abrir archivo con boton en formulario

Mensaje por mauricio »

No has mirado el vínculo, ahí esta la respuesta, es incorrecto el URL.
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Catar
Mensajes: 29
Registrado: Vie Jun 22, 2012 5:01 pm

Re: [RESUELTO] Abrir archivo con boton en formulario

Mensaje por Catar »

ok, si lo habia mirado, pero no lo suficiente. Queda tal que así:
sDirectorioActual = "file:///home/fernando/Tesorería/facturas/Facturas2012/"

Muy bueno el tutorial de OOoBasic. Desde luego será mi punto de partida para sacar todo el partido a las macros y preguntar los menos posible. Se hace difícil, entrar en este mundo, porque hay mil conceptos y cosas que no conoces y que piden mucho tiempo. A nivel de usuario no siempre dispones de el, pero ... lo bueno cuesta.

Aprendí a utilizar el office, y ahora que doy el paso a openoffice, toca empezar desde 0 y sacar todo el potencial, más que quedarse en cuatro opciones básicas. Espero no morir en el intento.

Saludos y gracias por la paciencia.
Ubuntu 12.04 LTS Precise Pangolin
LibreOffice 3.5.4.2
Catar
Mensajes: 29
Registrado: Vie Jun 22, 2012 5:01 pm

Re: [RESUELTO] Abrir archivo con boton en formulario

Mensaje por Catar »

...... ya estoy de nuevo aqui....
Después de modificar la url, he adaptado el botón a la base da datos que estoy haciendo, pero al darle me salta el siguiente error.
Error de ejecución de Basic
Se ha producido una excepción
Type:com.sun.star.container.NoSuchElementExceptionMessage

Haciendo referencia a la línea de la macro :
txtArchivo = Evento.Source.Model.Parent.getByName("Link")

En esta línea he cambiado el nombre donde estaba el nombre del archivo, de Texto a Link.

Mientras me voy haciendo con el tutorial iré preguntando porque hace ya un par de semanas que ha pasado a openoffice y debería tener la base de datos con un poco de cara y ojos y me urge un poco.
Ubuntu 12.04 LTS Precise Pangolin
LibreOffice 3.5.4.2
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: [RESUELTO] Abrir archivo con boton en formulario

Mensaje por mauricio »

Por favor, abre un nuevo tema para esto...

El error es claro: NoSuchElementExceptionMessage, no tienes un elemento Link, esta línea hace referencia la "control" del formulario, NO al campo de la base de datos...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Catar
Mensajes: 29
Registrado: Vie Jun 22, 2012 5:01 pm

Re: [RESUELTO] Abrir archivo con boton en formulario

Mensaje por Catar »

ok, solucionado.
Ubuntu 12.04 LTS Precise Pangolin
LibreOffice 3.5.4.2
Responder