Condividi tramite

Stampa Excel (VBA): righe da ripetere in alto variabili

Anonimo
2019-02-10T19:42:10+00:00

Buongiorno,

un mio collega mi ha posto il problema seguente: ha un foglio Excel abbastanza lungo (diciamo 200 righe) che, in realtà, contiene informazioni diverse (lo so che non sarebbe corretto, ma … è così!): ad es.: dati delle prenotazioni nelle prime 120 righe; dati delle conferme nelle restanti 80. Anche le testate, quindi, cambiano (pur rimanendo uguale il numero delle colonne): per le "prenotazioni", ad es., sarà "N. pren.", ecc.; per le conferme, sarà "N. conf.", ecc..

Vorrebbe effettuare un'unica stampa (e fin qui, nessun problema), però "tutta di seguito", ma...: fino alla riga 120, l'intestazione (o, meglio, le "righe da ripetere in alto") sono quelle relative alle prenotazioni (cioè testata del tipo: "N. pren." "Data pren.", ecc.), dalla riga 121 in poi, l'intestazione (le "righe da ripetere in alto") dovrebbe essere quella delle conferme (es.: "N. conf." "Data conf.", ecc.).

Questo si può "parzialmente" fare con una routine VBA collegata all'evento "BeforePrint": dico "parzialmente" perché si possono generare due stampe diverse, con due testate diverse, ma non sono riuscito (e credo non si riesca, ma chiedo lumi!) a generare un'unica stampa, che "a metà strada" cambia l'intestazione e le "righe da ripetere in alto".

Grazie e buon lavoro

Ivo

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2019-03-17T13:22:28+00:00

    Ciao Ivo53,

    ci scusiamo per il ritardo della risposta dovuto da un elevato numero di richieste di supporto ma se avessi ancora bisogno di noi siamo qui per aiutarti con la VBA da te desiderata.

    Per poter ricevere assistenza da un team di esperti che attraverso il loro strumenti saranno in grado di fornirti una soluzione veloce e completa, ti consiglio oltre ad attendere i preziosi consigli di Norman e dei nostri MVP, di pubblicare il tuo post sul forum dedicato di Msdn che puoi trovare in questo link. I nostri esperti saranno pronti a rispondere a tutte le tue domande sulla funzione da te richiesta!

    Per qualsiasi altro dubbio o domanda, siamo sempre qui per te!

    Ti auguro una buona giornata!

    Claudia

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2019-02-10T19:57:43+00:00

    Ciao Ivo,

    un mio collega mi ha posto il problema seguente: ha un foglio Excel abbastanza lungo (diciamo 200 righe) che, in realtà, contiene informazioni diverse (lo so che non sarebbe corretto, ma … è così!): ad es.: dati delle prenotazioni nelle prime 120 righe; dati delle conferme nelle restanti 80. Anche le testate, quindi, cambiano (pur rimanendo uguale il numero delle colonne): per le "prenotazioni", ad es., sarà "N. pren.", ecc.; per le conferme, sarà "N. conf.", ecc..

    Vorrebbe effettuare un'unica stampa (e fin qui, nessun problema), però "tutta di seguito", ma...: fino alla riga 120, l'intestazione (o, meglio, le "righe da ripetere in alto") sono quelle relative alle prenotazioni (cioè testata del tipo: "N. pren." "Data pren.", ecc.), dalla riga 121 in poi, l'intestazione (le "righe da ripetere in alto") dovrebbe essere quella delle conferme (es.: "N. conf." "Data conf.", ecc.).

    Questo si può "parzialmente" fare con una routine VBA collegata all'evento "BeforePrint": dico "parzialmente" perché si possono generare due stampe diverse, con due testate diverse, ma non sono riuscito (e credo non si riesca, ma chiedo lumi!) a generare un'unica stampa, che "a metà strada" cambia l'intestazione e le "righe da ripetere in alto".

    Forse:

    • Sfrutta l'evento BeforePrint per creare un foglio temporaneo, copiando il foglio di interesse
    • Determina / impone le posizioni verticali dei pagebreak
    • Inserisci le intestazioni richieste
    • Stampa ed elimina il foglio temporaneo

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento

1 risposta aggiuntiva

Ordina per: Più utili
  1. Anonimo
    2019-02-11T14:10:05+00:00

    Grazie, Norman.

    In effetti, anch'io pensavo che l'unica possibilità fosse farlo "a mano".

    Un'ultima domanda, sempre sul tema: dovrebbe esserci una funzione VBA che mi consente di sapere quante righe di stampa per foglio sono state scelte, ma non ricordo quale sia questa funzione. In pratica, se in "anteprima di stampa" setto "n1 righe" per pagina, piuttosto che "n2", dovrebbe essere possibile saperlo da VBA, in modo poi da rendere più "parametrizzato" il tutto.

    Grazie ancora e buona giornata

    Ivo

    La risposta è stata utile?

    0 commenti Nessun commento