Excel contenu conditionnel / Mise en forme pour impression par rapport à l'écran et les sauts de page
-
19-09-2019 - |
Question
J'ai une macro d'édition VBA dans Excel qui génère un classeur publié basé sur une feuille de configuration maître et un certain nombre de feuilles de calcul avec les données. La version publiée est des données droites, toujours en forme, mais sans formules et avec certaines notes et des informations générales réprimées. Fondamentalement, la configuration maître contient une table de noms de feuille de calcul et va être publiée.
Pour la version publiée à imprimer, quelques-unes des feuilles de calcul ont besoin des sauts de page insérés. Je me rends compte que je peux les insérer en fonction de la même configuration, et je peux aussi changer l'orientation d'impression et les marges d'une feuille de calcul particulière, en ajoutant quelques colonnes à ma feuille maître.
vient ici le plus délicat. Si une table a certaines de ces sauts de page insérés pendant le processus d'édition, je voudrais une ligne d'information à insérer avant le saut de page indiquant que le tableau se poursuit à la page suivante. Mais je ne veux que cela apparaisse dans la version imprimée, ne figure pas dans l'affichage à l'écran.
Est-il possible de le faire?
La solution
Tout d'abord, insérer une ligne et le cacher juste avant le saut de page. Ensuite, vous pouvez utiliser le BeforePrint
événement sur le classeur pour trouver toutes les lignes avec la « page suivante Voir » texte, puis les afficher.
Sub Workbook_BeforePrint(cancel as Boolean)
Dim rngCell as Range
set rngCell = ActiveSheet.UsedRange.Find("See Next Page")
while not rngCell is Nothing
if not rngCell is Nothing then
rngCell.EntireRow.Hidden = false
end if
set rngCell = ActiveSheet.UsedRange.FindNext()
loop
End Sub
Cela vous obtenez un peu étiez vous devez aller, cependant, il vous laissera sensible à la question du fait qu'il n'y a pas AfterPrint
. Donc, ce que vous pouvez faire est le suivant:
Sub Workbook_BeforePrint(cancel as Boolean)
Application.EnableEvents = false
'Unhide rows here
if cancel then
Workbook.PrintPreview()
else
Workbook.PrintOut()
end if
'Rehide rows here
Application.EnableEvents = True
End Sub
Notez que cancel
sera essentiellement vous dire si son un aperçu avant impression ou une commande d'impression réelle. Son très aimable, je pense.