Domanda

Ho un macro pubblicazione VBA in Excel che genera una cartella di lavoro pubblicato sulla base di un foglio di lavoro di configurazione master e un certo numero di fogli di lavoro con i dati. La versione pubblicata è dati direttamente, ancora formattati, ma con formule e con certe note e informazioni di base soppressi. In sostanza, la configurazione master contiene una tabella di nomi di foglio di lavoro e varia da pubblicare.

Per rendere la versione pubblicata stampabile, alcuni dei fogli di lavoro hanno bisogno di interruzioni di pagina inseriti. Mi rendo conto che posso inserire questi in base alla stessa configurazione, e posso anche cambiare l'orientamento della stampa e dei margini di un particolare foglio di lavoro, con l'aggiunta di un paio di colonne per il mio foglio padrone.

Ecco che arriva il po 'complicato. Se una tabella ha alcune di queste interruzioni di pagina inserite durante il processo di pubblicazione, desidero una riga informativo da inserire prima l'interruzione di pagina che indica che la tavola continua alla pagina successiva. Ma io voglio solo questo di presentarsi nella versione stampata, non visualizzato sul display sullo schermo.

C'è un modo per fare questo?

È stato utile?

Soluzione

In primo luogo, inserire una riga e nasconderlo poco prima l'interruzione di pagina. Quindi, è possibile utilizzare il BeforePrint evento sulla cartella di lavoro per trovare tutti righe con il testo "vedere la pagina successiva" in esso, e poi li Scopri.

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

Questo ti porterà un po 'eri devi andare, tuttavia, che vi lascerà sensibili alla questione del fatto che non c'è AfterPrint. Allora, che cosa si può fare è il seguente:

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

Si noti che cancel sarà essenzialmente dirvi se è un anteprima di stampa o un comando di stampa vera e propria. La sua stessa tipo di esso, credo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top