Access - Cerrar PDF desde Access

 
Vista:

Cerrar PDF desde Access

Publicado por José Luis (1 intervención) el 29/05/2020 10:16:47
¿Cómo puedo cerrar un archivo PDF abierto desde una instrucción en Access?

Muchas gracias
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
sin imagen de perfil
Val: 756
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Cerrar PDF desde Access

Publicado por Jesús Manuel (375 intervenciones) el 03/06/2020 13:23:44
Tomando como referencia la información de respuesta en este foro https://stackoverflow.com/questions/25714915/check-if-a-certain-pdf-file-is-open-and-close-it


En mi caso he adaptado el nombre del archivo, su ruta y de la versión de Acrobat Reader. He copiado las funciones y solo adapto el código en el botón que he creado para cerrar el archivo pdf (cmdCerrar).

He creado un formulario en blanco con dos botones uno para abrir un archivo pdf (lo he llamado cmdAbrir) y otro para cerrarlo (lo he llamado cmdCerrar). El código vba resultante en el formulario es:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Option Explicit
 
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" _
(ByVal Hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
lParam As Any) As Long
 
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassname As String, ByVal lpWindowName As String) As Long
 
Private Const WM_CLOSE = &H10
 
Function IsFileOpen(FileName As String)
    Dim ff As Long, ErrNo As Long
 
    On Error Resume Next
    ff = FreeFile()
    Open FileName For Input Lock Read As #ff
    Close ff
    ErrNo = Err
    On Error GoTo 0
 
    Select Case ErrNo
    Case 0:    IsFileOpen = False
    Case 70:   IsFileOpen = True
    Case Else: Error ErrNo
    End Select
End Function
 
 
Private Sub cmdAbrir_Click()
Shell "C:\Program Files (x86)\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe C:\PruebaPDF\ArchivoPDF.pdf", vbNormalFocus
End Sub
 
Private Sub cmdCerrar_Click()
 Dim Ret As Variant
 
 Ret = IsFileOpen("C:\PruebaPDF\ArchivoPDF.pdf")
 
 If Ret = True Then
'        MsgBox "Archvio pdf abierto"
     Dim Hwnd As Long
 
     Hwnd = FindWindow(vbNullString, "ArchivoPDF.pdf - Adobe Acrobat Reader DC")
' En el paso anterior si solo indicamos el nombre del archivo cierra la pestaña con el archivo pero mantiene abierto el programa
     If Hwnd Then
         PostMessage Hwnd, WM_CLOSE, 0, ByVal 0&
     Else
         MsgBox "No se ha encontrado el pdf"
     End If
 Else
     MsgBox "Archivo pdf cerrado"
 End If
End Sub
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