Condividi tramite

macro per stampare 1 pagina su X pagine

Anonimo
2017-01-09T19:38:01+00:00

Buonasera

sto programmando un file excel con diversi FOGLI e ogni foglio composto da più pagine, però vorrei realizzare una macro che mi permetta di stampare solo 1 o più pagine di un determinato foglio di lavoro.

In particolare mi interessa programmare una macro che quando clicco il comando mi fa aprire una message box che mi propone il range di pagine da stampare.

Es.

QUALI PAGINE VUOI STAMPARE?

Stampa pagine da  ____  a _____

      STAMPA            ANNULLA

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

4 risposte

Ordina per: Più utili
  1. Anonimo
    2017-01-10T11:38:45+00:00

    Ciao essegi75,

    sto programmando un file excel con diversi FOGLI e ogni foglio composto da più pagine, però vorrei realizzare una macro che mi permetta di stampare solo 1 o più pagine di un determinato foglio di lavoro.

    In particolare mi interessa programmare una macro che quando clicco il comando mi fa aprire una message box che mi propone il range di pagine da stampare.

    Es.

    QUALI PAGINE VUOI STAMPARE?

    Stampa pagine da  ____  a _____

          STAMPA            ANNULLA

    Credo che que la soluzione più appropriata sia quella di sfruttare una semplice Userform. Quindi, prova qualcosa del genere:

    • Alt+F11 per aprire l'editor di VBA
    • Alt+IUper creare una nuova Userform
    • Sulla Userform, inserisci ovunque gli seguenti oggetti:
    • 2 x oggetti TextBox
    • 2 x oggetti CommabButton
    • 2 x oggetti Label

    Non preoccupati sia per le dimiensioni degli oggetti che la loro posizioni perchè ci ho pensato io nel codice qui sotto!

    Nel modulo di codice della Userform, incolla il seguente codice:

    '=========>>

    Option Explicit

    '--------->>

    Private Sub UserForm_Initialize()

        With Me

            .Caption = "QUALI PAGINE VUOI STAMPARE?"

            .Width = 170

            .Height = 95

            With Label1

                .Top = 6

                .Left = 40

                .Width = 108

                .Height = 18

                .Caption = "Stampa pagine da:"

            End With

            With Label2

                .Top = 24

                .Left = 66

                .Width = 12

                .Height = 18

                .Caption = "a"

            End With

            With .TextBox1

                .Top = 24

                .Left = 18

                .Width = 42

                .Height = 18

            End With

            With .TextBox2

                .Top = 24

                .Left = 82

                .Width = 42

                .Height = 18

            End With

            With .CommandButton1

                .Top = 48

                .Left = 45

                .Width = 50

                .Height = 18

                .Caption = "STAMPA"

            End With

            With .CommandButton2

                .Top = 54

                .Left = 110

                .Width = 50

                .Height = 18

                .Caption = "ANULLA"

            End With

        End With

    End Sub

    '--------->>

    Private Sub CommandButton1_Click()

        Dim iStart As Long, iEnd As Long

        On Error Resume Next

        With Me

            iStart = CLng(.TextBox1.Value)

            iEnd = CLng(.TextBox2.Value)

        End With

        On Error GoTo 0

        If CBool(iStart) And CBool(iEnd) Then

                ActiveSheet.PrintOut From:=iStart, _

                                 To:=iEnd, _

                                 Copies:=1, _

                                 Preview:=False

                                 Unload Me

        Else

            Call MsgBox( _

                 Prompt:="Devi precisare le pagine da stampare!", _

                 Buttons:=vbInformation, _

                 Title:="REPORT")

        End If

    End Sub

    '--------->>

    Private Sub CommandButton2_Click()

        Unload Me

    End Sub

    '<<=========

    • Alt+IM per inserire un nuovo modulo di codice
    • Nel nuovo modulo vuoto, incolla il seguente codice: '=========>>

    Option Explicit

    '--------->>

    Public Sub Tester()

        UserForm1.Show vbModeless

    End Sub

    '<<=========

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel
    • Salva il file con l’estensione xlsm
    • Alt+F8 per aprire  la finestra di gestione delle macro
    • Seleziona Tester | Esegui

    Eseguendo la macro Tester, dovresti vedere qualcosa del genere:

                                    

    Potresti scaricare il mio file di prova Essegi20170110.xlsm a:

    https://www.dropbox.com/s/wypmxrj2brwetxh/Essegi20170110.xlsm?dl=0

    ===

    Regards,

    Norman

    La risposta è stata utile?

    2 persone hanno trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2017-10-23T12:11:04+00:00

    Si certamente

    Avevo pensato di farlo ma ho preferito attendere una risposta per evitare di postare due thread uguali.

    Grazie ora posto subito quello nuovo.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-10-23T10:59:19+00:00

    Ciao Davide,

    Fantastico Norman

    Stavo cercando una cosa del genere e guarda caso ho trovato questo post che fa al caso mio.

    Vorrei chiedere solo se posso usare l'esempio da te riportato ma con la differenza che vorrei stampare un report come quello che sto per allegare dove andare ad inserire tutti i dati necessari.

    Mi spiego meglio.

    Ogni mattina ho un file di excel con estensione csv con gli ordini generati il giorno prima.

    Ho bisogno che ogni ordine sia inserito nel template che ho allegato in modo tale da poter stampare il template con tutte le informazoni del cliente e del pordotto che il cliente ha acquistato.

    Ogni ordine deve corripondere ad una pagina da stampare.

    Finora avevo creato un template in cui il mio collega inserendo il codice sku del articolo, con delle formule, riuscivo a fargli prendere i dati dal file database e poi poteva stamparlo normalmente.

    Ora pero' ho la necessita che ogni mattina questi numeri sku generino tanti template da stampare.

    Immagino ci voglia del vba per far questo e qui purtroppo non so andare avanti.

    Se ci fosse una soluzione alternativa per fare questo ti sarei grato di indicarmela perche' al momento non mi viene nulla in mente.

    https://www.dropbox.com/s/u1b3l87eaxzihus/template%20test.xlsx?dl=0

    Sarò lieto di proporre una soluzione adatta ma considerando l'anzianità del thread citato da te e la diversità della tua esigenza,  per aiutare altri che potessero avere bisigno di una soluzione simile, ti chiederei gentilmente di aprire un nuovo dedicato thread.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-10-23T09:46:21+00:00

    Fantastico Norman

    Stavo cercando una cosa del genere e guarda caso ho trovato questo post che fa al caso mio.

    Vorrei chiedere solo se posso usare l'esempio da te riportato ma con la differenza che vorrei stampare un report come quello che sto per allegare dove andare ad inserire tutti i dati necessari.

    Mi spiego meglio.

    Ogni mattina ho un file di excel con estensione csv con gli ordini generati il giorno prima.

    Ho bisogno che ogni ordine sia inserito nel template che ho allegato in modo tale da poter stampare il template con tutte le informazoni del cliente e del pordotto che il cliente ha acquistato.

    Ogni ordine deve corripondere ad una pagina da stampare.

    Finora avevo creato un template in cui il mio collega inserendo il codice sku del articolo, con delle formule, riuscivo a fargli prendere i dati dal file database e poi poteva stamparlo normalmente.

    Ora pero' ho la necessita che ogni mattina questi numeri sku generino tanti template da stampare.

    Immagino ci voglia del vba per far questo e qui purtroppo non so andare avanti.

    Se ci fosse una soluzione alternativa per fare questo ti sarei grato di indicarmela perche' al momento non mi viene nulla in mente.

    https://www.dropbox.com/s/u1b3l87eaxzihus/template%20test.xlsx?dl=0

    Grazie mille

    Davide

    La risposta è stata utile?

    0 commenti Nessun commento