VBA raffine le code .PrintOut pour définir le nom de file pdf et l'location actuel

J'ai une macro qui sélectionne les feuilles de calcul à imprimer à partir de feuilles de calcul portant une valeur dans la cellule A1.

J'essaie d'ajuster le code afin qu'il imprime le file pdf avec un nom prédéterminé, par exemple "Output.pdf" et dans le dossier que le file excel est actuellement enregistré

Je n'ai pas les compétences VBA pour le faire – J'ai essayé de find du code dans divers forums, sans chance.

Mon code est actuellement:

Sub Print_All_Worksheets_With_Value_In_A1() Dim Sh As Worksheet Dim Arr() As Ssortingng Dim N As Integer N = 0 Application.ActivePrinter = "Adobe PDF on Ne07:" For Each Sh In ActiveWorkbook.Worksheets If Sh.Visible = xlSheetVisible And Sh.Range("A1").Value <> "" Then N = N + 1 ReDim Preserve Arr(1 To N) Arr(N) = Sh.Name End If Next With ActiveWorkbook .Worksheets(Arr).PrintOut End With End Sub 

Toute aide pour affiner cette zone en particulier sera grandement appréciée

 With ActiveWorkbook .Worksheets(Arr).PrintOut 

J'ai une idée légèrement différente de la façon de le faire.

Vous avez créé un tableau de feuilles de calcul avec la variable Arr . Je pense au lieu de cela:

 With ActiveWorkbook .Worksheets(Arr).PrintOut ... End With 

Faire cela:

 Dim path as Ssortingng 'Capture the path of the current workbook path = ActiveWorkbook.Path & "\" 'The copy method will create a NEW workbook with these sheets ActiveWorkbook.Worksheets(arr).Copy 'The NEW workbook is now "Active", so use ActiveWorkbook and exportAsFixedFormat ActiveWorkbook.ExportAsFixedFormat xlTypePDF, path & "output.pdf" 'Closes the temporary workbook without warning Application.DisplayAlerts = False ActiveWorkbook.Close Application.DisplayAlerts = True