web-dev-qa-db-fra.com

Enregistrer plusieurs feuilles au format .pdf

J'ai une feuille de calcul de rapport qui récupère certaines données d'une base de données et forme trois feuilles d'informations de rapport de synthèse. Je souhaite exécuter la feuille de calcul automatiquement à partir de la ligne de commande et la faire enregistrer automatiquement les trois feuilles de rapport sous forme de fichier PDF PDF).

Au début, je pensais que je pourrais avoir une macro VBA sur la feuille pour ce faire par une série de "imprimer en PDF", mais cela nécessite une boîte de dialogue interactive intermédiaire pour spécifier le nom du fichier de sortie. Ensuite, je constate que je peux simplement enregistrer au format pdf, et la macro peut définir le nom du fichier de sortie. Cependant, cela crée trois fichiers distincts, et je dois ensuite les assembler en externe pour les fusionner.

(Il est étrange que l'enregistrement au format PDF n'enregistre qu'une seule feuille, alors que les autres modes d'enregistrement semblent enregistrer l'intégralité du classeur.)

Oui, il existe des outils pour fusionner les trois fichiers plus tard, mais je veux savoir s'il existe un moyen simple d'obtenir qu'Excel enregistre plusieurs feuilles ensemble en un seul fichier pdf.

J'imprime maintenant par une série de choses comme:

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, ...

Puis-je faire à la place une seule déclaration quelque chose comme (pseudo-code):

ThisWorkbook.Sheets(1,2,3,4).ExportAsFixedFormat Type:=xlTypePDF, ...
24
guthrie

Commencez par sélectionner les feuilles que vous souhaitez combiner:

ThisWorkbook.Sheets(Array("Sheet1", "Sheet2")).Select

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    "C:\tempo.pdf", Quality:= xlQualityStandard, IncludeDocProperties:=True, _
     IgnorePrintAreas:=False, OpenAfterPublish:=True
69
Tim Williams

Similaire à la réponse de Tim - mais avec une vérification pour 2007 (où l'exportation PDF n'est pas installé par défaut):

 Public Sub subCreatePDF () 
 
 Sinon IsPDFLibraryInstalled Alors 
 'Mieux vaut le montrer comme un formulaire utilisateur avec un lien approprié: 
 MsgBox "Veuillez installer le complément à exporter au format PDF. Vous pouvez le trouver sur http://www.Microsoft.com/downloads/details.aspx?familyid=4d951911-3e7e-4ae6-b059-a2e79ed87041 ". 
 Quitter Sub 
 Fin Si 
 
 ActiveSheet.ExportAsFixedFormat Type: = xlTypePDF, _ 
 Nom de fichier: = ActiveWorkbook.Path & Application.PathSeparator & _ 
 ActiveSheet.Name & "für" & Range ("SelectedName"). Value & ".pdf", _ 
 Qualité: = xlQualityStandard, IncludeDocProperties: = True, _ 
 IgnorePrintAreas : = False, OpenAfterPublish: = True 
 End Sub 
 
 Fonction privée IsPDFLibraryInstalled () As Boolean 
 'Les crédits vont à Ron DeBruin (http: // www. rondebruin.nl/pdf.htm)
 IsPDFLibraryInstalled = _ 
 (Dir (Environ ("commonprogramfiles") & _ 
 "\ Microsoft Shared\OFFICE" & _ 
 Format (Val (Application.Version), "00") & _ 
 "\ EXP_PDF.DLL") <> "") 
 Fin de fonction 
8
Peter Albert

Je recommande d'ajouter la ligne suivante après l'exportation au format PDF:

ThisWorkbook.Sheets("Sheet1").Select

(où par exemple. Sheet1 est la feuille unique que vous souhaitez activer par la suite)

Laisser plusieurs feuilles dans un état sélectionné peut entraîner des problèmes d'exécution de code. (par exemple, le déprotection ne fonctionne pas correctement lorsque plusieurs feuilles sont activement sélectionnées.)

5
Armand