divendres, 14 de desembre de 2012

Obrir PDF des de Acces amb VBA

Queda explicat a http://www.mvp-access.com/buho/ficheros/abrirfichero.txt :


Hola a todos y gracias de antemano. Mi duda es la siguiente:
resulta q tengo un manual de mi aplicacion hecho en acrobat (pdf) y queria
que al apretar un command button se abriera. Es posible?? como??


BUHO
====

Para abrir un fichero (Del tipo que sea...Bmp, Jpg, Pdf) desde Access,
Windows guarda la asociacion de la extension de dicho fichero con un
ejecutable con lo cual .....
esto puede servirte como orientacion:
http://personal.telefonica.terra.es/web/medicofamilia/asociada.txt
http://www.iespana.es/mcpegasus/faqs/basEjecutarAplicacion.txt

o esto...


'esto en un modulo bas de tu aplicacion, por ejemplo
'en una sola linea
Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Const SW_SHOW = 1

'***********************************

'Esto en cualquier boton de comando de tu formulario
ShellExecute Me.hwnd, "open", "C:\Carpeta\Manual.pdf", "", "", SW_SHOW


Jo ho he provat amb un parell de modificacions:

en el mòdul, en lloc de SW_SHOW= 1 he fet servir 3. A banda, li he fet obrir uns quants fitxers simultàniamente

La font per canviar de 1 a 3 ha estat

Si el valor 1 implica normal 
SW_SHOWNORMAL (1)
Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position. An application should specify this flag when displaying the window for the first time.
entenc que el valor 3 implicarà maximització:

SW_SHOWMAXIMIZED (3)
Activates the window and displays it as a maximized window.
I ha funcionat!!!

El meu codi en un botó:

Private Sub Comando0_Click()
ShellExecute Me.hwnd, "open", "E:\DATOS\Empresa\python-excel.pdf", "", "", SW_SHOW
ShellExecute Me.hwnd, "open", "E:\DATOS\Empresa\vbasic60.pdf", "", "", SW_SHOW
ShellExecute Me.hwnd, "open", "E:\DATOS\Empresa\vb.pdf", "", "", SW_SHOW
ShellExecute Me.hwnd, "open", "E:\DATOS\Empresa\Prestamos.pdf", "", "", SW_SHOW
End Sub


i el codi en el mòdul:

Option Compare Database
Option Explicit

Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Public Const SW_SHOW = 3

Ara provaré que el codi del botó ataqui a un recordset on tingui els PDF que vull obrir i d'aquesta manera estalviaré el anar obrint-los d'un en un des de l'explorador (que trist)

Cap comentari:

Publica un comentari a l'entrada