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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top