Fermer un PDF avec VBA

Bonjour,

J'ai une macro qui me permet d'éditer un PDF à partir d'un onglet Excel et de le sauvegarder dans un dossier. Je souhaiterai que la macro ferme ce pdf sans fermer mon fichier Excel car je dois ré-effectuer cette tâche 21 fois avec d'autres onglets Excel. Je voudrais donc éviter d'avoir 22 PDF ouvert en même temps.

Voici le code vba que j'ai:

Sub Macro_PDF_Hebdo()

    Dim Mois As String
    Dim Semaine As Integer
    Sheets("Paramétrage").Select
    Mois = Range("I22")
    Semaine = Range("G22")

    Sheets("Région Graph").Select
    ChDir _
        "C:\Users\Utilisateur\Desktop\Pilotage d'activité hebdo\PDF Agence Hebdo\" & Mois & "\Sem " & Semaine
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\Utilisateur\Desktop\Pilotage d'activité hebdo\PDF Agence Hebdo\" & Mois & "\Sem " & Semaine & "\Tableau de pilotage_Région_Sem_" & Semaine & ".pdf" _
        , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=True

    Dim Wk As Workbook
    Set Wk = Workbooks("Base de données.xlsm")
    Call Fermer_Un_Programme(AcroRd32.exe)
    Wk.Activate
End Sub

Sub Fermer_Un_Programme(Prog As String)
Dim StrComputer As String, objWMIService As Object
StrComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & StrComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = '" & Prog & "'")
For Each objProcess In colProcessList
objProcess.Terminate
Next
End Sub

Ma macro bloque à la ligne "Call Fermer_Un_Programme(AcroRd32.exe)" et je ne comprends par pourquoi.

Merci pour votre aide.

Hello,

C'est parce qu’il faut mettre le nom de l'appli. : AcroRd32.exe, comme ça : "AcroRd32.exe"

J'ai ajouté un Exit de boucle, chez moi j'ai un bug automation.

Sub lancer_sub_fermeture_prog_pdf()
Call Fermer_Un_Programme("AcroRd32.exe")
End Sub
Sub Fermer_Un_Programme(Prog As String)
Dim StrComputer As String
Dim objProcess As Object
Dim colProcessList As Object
Dim objWMIService As Object

StrComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & StrComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = '" & Prog & "'")
For Each objProcess In colProcessList
objProcess.Terminate
Exit For 'éviter le bug automation, cette sub ferme en fait toutes les appli. pdf en même temps et non 1 à la fois
Next
End Sub

bye

Merci ça fonctionne !!

Bonjour,

autre voie pour fermer l'exécutable AcroRd32.exe :

Sub Demo()
CreateObject("WScript.Shell").Run "taskkill.exe /IM AcroRd32.exe /T /F", 0
End Sub

Edit : possible d'utiliser directement la fonction Shell de VBA; la ligne provenant d'une de mes procédures VBScript …

Rechercher des sujets similaires à "fermer pdf vba"