2009-07-26 7 views
1

J'ai une macro de publication VBA dans Excel qui génère un classeur publié basé sur une feuille de travail de configuration principale et un certain nombre de feuilles de calcul contenant les données. La version publiée est une donnée directe, toujours formatée, mais sans formules et avec certaines notes et informations de fond supprimées. Fondamentalement, la configuration principale contient une table de noms de feuille de calcul et des plages à publier.Contenu/formatage conditionnel Excel pour l'impression, l'écran et les sauts de page

Pour que la version publiée puisse être imprimée, certaines feuilles de travail nécessitent l'insertion de sauts de page. Je me rends compte que je peux les insérer sur la base de la même configuration, et je peux également modifier l'orientation et les marges d'impression d'une feuille de calcul particulière, en ajoutant quelques colonnes supplémentaires à ma feuille principale.

Voici le problème. Si une table comporte certains de ces sauts de page insérés pendant le processus de publication, je voudrais insérer une ligne d'information avant le saut de page indiquant que la table est continuée sur la page suivante. Mais je veux seulement que cela apparaisse dans la version imprimée, non affichée dans l'affichage à l'écran.

Existe-t-il un moyen de le faire?

Répondre

3

Commencez par insérer une ligne et la masquer juste avant le saut de page. Ensuite, vous pouvez utiliser l'événement BeforePrint dans le classeur pour rechercher toutes les lignes avec le texte "Voir la page suivante" et les afficher ensuite.

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 la suivante:

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. C'est très gentil, je pense.

+0

Merci, je vais essayer. –

Questions connexes