STAMPA CON MACRO



  • STAMPA CON MACRO
    di ENZO62 (utente non iscritto) data: 22/11/2014 19:37:05

    Ciao mi chiamo enzo (autodidatta),
    sono alle prese con le macro.
    Ho un problema, da un file excell composto da tre fogli dove il primo è l'inserimento dati degli altri due, dove il 2° deve essere stampato su una stampante etichetta 10x10, il 3° deve essere stampato su foglio A4. Quando formo la macro digito i passaggi per il foglio 2 (etichettatrice) e poi digito i passaggi per il foglio 3 (stampaA4).
    Quando stampa, mi stamapa tutto sul foglio A4, chiaramente se faccio il contrario mi stampa (una marea di etichette) tutto sull'etichettatrice. Come posso risolvere il problema.
    GRAZIE ANTICIPATAMENTE



  • di Zer0Kelvin data: 22/11/2014 20:29:07

    Ciao.
    Personalmente non ho avuto a che fare con etichettatrici, ma non dovrebbe essere importante.
    Puoi procedere così: registra due macro separate per foglio2 e foglio3 e controlla se individualmente funzionano.
    Dopo allega al post (nel riquadro in basso) il codice prodotto (anche se difettoso) e cercheremo di fonderlo in un'unica macro.



  • di Zer0Kelvin data: 22/11/2014 20:30:12

    PS: quasi certamente occorrerà conoscere i nomi dei fogli da stampare.


  • STAMPA CON MACRO
    di ENZO62 (utente non iscritto) data: 22/11/2014 21:51:02

    GRAZIE...... Ti ringrazio per la tempestiva risposta, ma il tutto lo dobbiamo rimandare a lunedì, perché il file l'ho sul computer a lavoro. Quindi se ho capito bene: 1) creo le due macro separatamente nei due fogli, 2) ti scrivo i nomi delle stampanti corrispondenti ai fogli, 3) poi sarete voi a formare un'unica macro dalle due.Dove è specificato di inviare il codice prodotto (anche se difettoso) si intendi il file completo vero?
    Però vorrei anche capire l'azione completa per poterla usare io altre volte, o forse mi basterebbe in seguito andare in ESEGUI LE ISTRUZIONI MACRO per capire la dicitura esatta che modificherete in esse?
    GRAZIE



  • di Zer0Kelvin data: 23/11/2014 02:16:01

    Penso che il file completo non serva, dovrebbero essere sufficienti le macro e i nomi dei FOGLI (i nomi delle stampanti dovrebbero già trovarsi nelle macro). Comunque, se alleghi il file, male non fà.


  • STAMPA CON MACRO
    di ENZO62 (utente non iscritto) data: 25/11/2014 23:31:14

    Ciao Zer0Kelvin,
    sono nuovamente oggi a chiederti l'aiuto sulla stampa con le macro.
    Oggi a lavoro ho provato come da te consigliato, a generare le macro nei rispettivi fogli singolarmente. ho notato una cosa importante, cioè, nel registro macro le diciture sono praticamente identiche chiaramente tranne che sul nome del foglio, cioè non vi è nessuna traccia dei nomi delle rispettivi stampanti (etichettatrice e A4).ti allego il copia e incolla , Sicuramente forse sbaglio nel registrare le macro.
    I passaggi che eseguo sono (mi posiziono nel foglio 2 per registrare la macro e clicco):
    REGISTRA MACRO, assegno il nome della macro con le parole tutte unite, FILE, STAMPA, seleziono la stampante STAMPANTE, COPIE seleziono il numero, INTERROMPI MACRO.
    Così faccio per il 3° foglio ma come vedi con l'incolla non vi è traccia del nome delle stampanti (etichettatrice Zebra S4M, stampante A4 Hp Laser Jet P2035)

    Dalle macro generate singolarmente

    Sub StampaEtichetteTrasfusione()
    '
    ' StampaEtichetteTrasfusione Macro
    ' StampaEtichetteTrasfusione
    '

    '
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
    IgnorePrintAreas:=False
    End Sub
    Sub StampaModuloDiConsegna()
    '
    ' StampaModuloDiConsegna Macro
    ' StampaModuloDiConsegna
    '

    '
    ActiveWindow.SelectedSheets.PrintOut Copies:=3, Collate:=True, _
    IgnorePrintAreas:=False
    End Sub

    quando registro la macro complessiva dei due fogli, come dovrebbe essere, eseguo questi passaggi,
    mi posiziono nel soglio di inserimento dati (dove ci sono una serie di caselle da compilare e che alla fine della stampa, se la macro funziona, dovrebbero cancellarsi per permettere l'inserimento di altri dati, e clicco: REGISTRA MACRO assegno il nome e continuo, clicco sul foglio ETICHETTA TRASFUSIONI, FILE, STAMPA, scelgo la stampante Zebra S4M ci clicco sopra, STAMPA, clicco sul foglio MODULO DI CONSEGNA,FILE,STAMPA, seleziono la stampante HP Laser Jet P2035, seleziono n° copie 3, STAMPA, mi riporto nel foglio INSERIMENTO DATI, seleziono le caselle da cancellare, CANC, INTERROMPI LA REGISTRAZIONE,
    La macro mi viene così:
    Dalle macro generate insieme

    Sub StampaComplessiva()
    '
    ' StampaComplessiva Macro
    ' StampaComplessiva
    '

    '
    Sheets("ETICHETTE TRASFUSIONE").Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
    IgnorePrintAreas:=False
    Sheets("MODULO DI CONSEGNA").Select
    ActiveWindow.SelectedSheets.PrintOut Copies:=3, Collate:=True, _
    IgnorePrintAreas:=False
    Sheets("INSERIMENTO DATI").Select
    Range("C2,C4,C6,C8,C10,C12,C14,F2,H2,J2,F4,J4,F6,J6,F8,J8,F10,J10,F12").Select
    Range("F12").Activate
    Selection.ClearContents
    End Sub

    Anche in questo caso non vi è traccia dnomi di stampanti.......
    PERDONAMI SE MI SONO DILUNGATO TROPPO MA HO VOLUTO FARTI CAPIRE TUTTI I PASSAGGI CHE HO FATTO PER INDIVIDUARE DOVE SBAGLIO PERCHE' SICURAMENTE OMETTO QUALCOSA, SONO ANCORA INESPERTO.
    GRAZIE PER L'ATTENZIONE....
    CIAO



  • di Zer0Kelvin data: 26/11/2014 14:45:35

    Scusa, colpa mia.
    Davo per scontato che il registratore rilevasse la stampante attiva, invece non è così; ed è anche il motivo per cui le macro non funzionano come dovrebbero.
    Devi ottenere "Manualmente" il nome delle due stampanti (che non è uguale al nome visualizzato).
    Per ottenere il nome delle due stampanti, seleziona la prima stampante, posizionati su un foglio vuoto ed esegui la macro StampanteAttiva; dopo seleziona la seconda stampante ed esegui nuovamente StampanteAttiva.
    A questo punto, nelle celle A2 ed A3 dovresti avere i nomi delle due stampanti che potrai andare a sostituire nella macro StampaComplessiva al posto di XXXX e YYYY, specificando, per ogni foglio, la stampante che dovrà essere utilizzata.
    I nomi dovranno essere fra doppi apici, per es.:

    ActivePrinter:="PDF Creator 2 su Ne00:"


     
    Sub StampanteAttiva()
        Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = ActivePrinter
    End Sub
    
    Sub StampaComplessiva()
        Sheets("ETICHETTE TRASFUSIONE").PrintOut Copies:=1, ActivePrinter:="XXXX", IgnorePrintAreas:=False
        Sheets("MODULO DI CONSEGNA").PrintOut Copies:=3, ActivePrinter:="YYYY", IgnorePrintAreas:=False
        Sheets("INSERIMENTO DATI").Range("C2,C4,C6,C8,C10,C12,C14,F2,H2,J2,F4,J4,F6,J6,F8,J8,F10,J10,F12").ClearContents
    End Sub
    


  • STAMPA CON MACRO
    di ENZO62 (utente non iscritto) data: 26/11/2014 17:24:05

    Ciao, nuovamente.
    scusami nuovamente ma non riesco ad ottenere i nomi delle stampanti, sicuramente non eseguo bene la macro della StampanteAttiva (sto provando con la stampante di casa, come esempio, ma non ottengo nessun nome), Perdonami ma se mi digiti i passaggi forse è meglio.
    Io come da te consigliato ho selezionato la stampante, poi in un foglio vuoto ho creato la macro StampanteAttiva ,FILE, STAMPA e ho la stampa, interrotto la registrazione della macro, ma nel foglio come da te descritto non viene visualizzato nulla e il registro della macro è così composto:
    Sub StampanteAttiva()
    '
    ' StampanteAttiva Macro
    ' StampanteAttiva
    '

    '
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
    IgnorePrintAreas:=False
    End Sub

    aiutami.......
    GRAZIE


  • STAMPA CON MACRO
    di ENZO62 (utente non iscritto) data: 26/11/2014 17:29:43

    SCUSAMI....
    dimenticavo che questo foglio di lavoro, copiato in più computer dovrò ricercare i nomi di altre stampanti per farlo funzionare bene, quindi questo passaggio di individuare i nomi delle stampanti collegate sia al computer che con altri in rete lo devo capire bene,



  • di Zer0Kelvin data: 26/11/2014 19:45:50

    Per ottenere il nome dalla stampante NON DEVI registrare la macro o lanciare la stampa ma:
    1) selezionare la stampante di cui vuoi ottenere il nome
    2) ESEGUIRE la macro
     
    Sub StampanteAttiva()
        Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = ActivePrinter
    End Sub
    



  • di Zer0Kelvin data: 26/11/2014 19:50:27

    Serie completa dei passi:
    1) nell'editor VBA, Crei un modulo standard (oppure ne utilizzi uno esistente)
    2) nel modulo incolli il codice che ho inserito sopra
    3) selezioni la stampante
    4) esegui la macro StampanteAttiva


  • STAMPA CON MACRO
    di ENZO62 (utente non iscritto) data: 26/11/2014 20:42:50

    Scusami Zer0Kelvin
    stò per gettare la spugna, arrivato ad incollare questo, ci siamo

    Sub StampanteAttiva()
    Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = ActivePrinter
    End Sub

    poi non capisco come selezionare la stanpante ed ESEGUIRE la macro, non capisco da dove, perché dopo l'incolla del codice vado in FILE per selezionare la stampante e poi mi blocco dove si esegue la macro.
    SCUSA SO CHE FORSE STO CERCANDO DI CAPIRE QUALCOSA DI UN PO PIU' DIFFICILE PER ME MA SONO UN PO TESTARDO E VOGLIO FARCELA.

    scusami ma vorrei anche capire come ottenere

    Sub StampanteAttiva()
    Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = ActivePrinter
    End Sub

    CHE NON CI SONO RIUSCITO

    però se ritieni che non ce la faccio ti ringrazio ugualmente, anzi hai avuto fin troppa pazienza con me.
    Non me ne volere sei stato fantastico e con i tuoi consigli continuerò a tentare, pero' per il momento ripeto, non ce la sto facendo.

    GRAZIE COMUNQUE




  • di Zer0Kelvin data: 28/11/2014 12:09:55

    Non preoccuparti, forse ti ho disorientato io dando per scontate alcune cose.
    Ti descrivo passo-passo quello che devi fare dall'inizio (eventualmente ignora i passi che già eseguiti):
    1)da Excel premi ALT-F11 per accedere all'editor VBA
    2)Nella finestra a sinistra ( Progetto- VBA project ) fai click destro e selezioni "Inserisci"->"Modulo" (oppure seleziona un modulo già esistente)
    3)nel modulo a destra incolli il codice della macro StampanteAttiva
    4)torna ad Excel (ALT-F11)
    5)vai al menù file e selezioni la stampante
    6)seleziona il foglio dove devono comparire i nomi delle stampanti
    7)premi ALT-F8 per far comparire la finestra Macro
    8)nell'elenco delle macro fai doppio click su StampanteAttiva
    A questo punto, nella cella A2 dovrebbe essere comparso il nome della stampante attiva
    Ripeti i punti da 5 a 8 per l'altra stampante.
    Nella cella A3 dovresti avere il nome dell'altra stampante.


  • STAMPA CON MACRO
    di ENZO62 (utente non iscritto) data: 03/12/2014 22:21:08

    Scusami Zer0Kelvin,
    non ti ho risposto perché ero per qualche giorno fuori casa.
    Da qualche ora sto provando con le tue ultime indicazioni, ma credimi, non ci riesco ad ottenere i nomi delle stampanti. Io credo che il problema sta nell'ottenere la macro StampanteAttiva (forse...), tu mi dici di non registrare la macro, ma veramente non ho capito come ottenere "StampanteAttiva". Sicuramente non voglio assillarti con la mia totale inesperienza con le macro. Paradossalmente sto usando due macro, solo per cancellare, quando si rende necessario, tutte le celle piene, per poter inserire altri dati, (praticamente quasi....... inutilmente, però anche queste piccolezze servono). Non so se tu abbia molta pazienza, ma scusami per il tempo che ti ho fatto perdere fino ad oggi.
    GRAZIE DI TUTTO.


  • STAMPA SU MACRO
    di ENZO62 (utente non iscritto) data: 09/12/2014 16:15:20

    buongiorno Zer0Kelvin,
    Sono qui a scriverti nuovamente, perché, ho fatto un piccolo ma per me grande passo avanti, cioè, sono riuscito ad ottenere i nomi delle stampanti con la macro da te consigliatami di StampanteAttiva.

    Sub StampanteAttiva()
    Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = ActivePrinter
    End Sub

    prima non capisco perché non ci riuscivo.
    ora se non ti chiedo troppo dimmi dove devo sostituire i nomi ottenuti delle stampanti nella macro da me creata di StampaComplessiva (leggermente diversa dalla precedente in quanto ora i tre fogli sono in tre file excell diversi e non in fogli dello stesso file. (copio la mia macro creata e scrivo i nomi delle stampanti ottenuti)
    Dopo questa operazione la devo rifare da un altro computer dove esiste un'altra stampante S4M collegata, ma la stampante A4 predefinita è in rete, spero non cambi nulla.


    Sub StampaComplessiva()
    '
    ' StampaComplessiva Macro
    ' StampaComplessiva
    '

    '
    Windows("B STAMPA ETICHETTE TRASFUSIONE.xlsx").Activate
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
    IgnorePrintAreas:=False
    Windows("C STAMPA MODULO DI CONSEGNA.xlsx").Activate
    ActiveWindow.SelectedSheets.PrintOut Copies:=3, Collate:=True, _
    IgnorePrintAreas:=False
    Windows("A MODULO ANAGRAFICA.xlsx.xlsm").Activate
    Range("C2,C4,C6,C8,C10,C12,C14,F2,H2,J2,F4,J4,F6,J6,F8,J8,F10,J10,F12").Select
    Range("F12").Activate
    Selection.ClearContents
    End Sub


    i nomi delle stampanti sono:

    Zebra S4M su Ne00......................per "B STAMPA ETICHETTE TRASFUSIONE.xlsx"

    HP LaserJet P2035 su Ne04............per "C STAMPA MODULO DI CONSEGNA.xlsx"

    scusami se continnuo ad assillarti ma voglio arrivare al traguardo.

    RISPONDIMI PER FAVORE

    GRAZIE E SCUSAMI NUOVAMENTE.


  • STAMPA CON MACRO
    di ENZO62 (utente non iscritto) data: 11/12/2014 16:00:08

    Incollo la mia risposta precedente del 09/12, perché, ho riscontrato un problema nella mia e-mail di conferma, ed è probabile, che non sia arrivata correttamente a Zer0Kelvin (credo..), poi, non dovesse essere così, mi scuso, alla prossima


    buongiorno Zer0Kelvin,
    Sono qui a scriverti nuovamente, perché, ho fatto un piccolo ma per me grande passo avanti, cioè, sono riuscito ad ottenere i nomi delle stampanti con la macro da te consigliatami di StampanteAttiva.

    Sub StampanteAttiva()
    Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = ActivePrinter
    End Sub

    prima non capisco perché non ci riuscivo.
    ora se non ti chiedo troppo dimmi dove devo sostituire i nomi ottenuti delle stampanti nella macro da me creata di StampaComplessiva (leggermente diversa dalla precedente in quanto ora i tre fogli sono in tre file excell diversi e non in fogli dello stesso file. (copio la mia macro creata e scrivo i nomi delle stampanti ottenuti)
    Dopo questa operazione la devo rifare da un altro computer dove esiste un'altra stampante S4M collegata, ma la stampante A4 predefinita è in rete, spero non cambi nulla.


    Sub StampaComplessiva()
    '
    ' StampaComplessiva Macro
    ' StampaComplessiva
    '

    '
    Windows("B STAMPA ETICHETTE TRASFUSIONE.xlsx").Activate
    ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
    IgnorePrintAreas:=False
    Windows("C STAMPA MODULO DI CONSEGNA.xlsx").Activate
    ActiveWindow.SelectedSheets.PrintOut Copies:=3, Collate:=True, _
    IgnorePrintAreas:=False
    Windows("A MODULO ANAGRAFICA.xlsx.xlsm").Activate
    Range("C2,C4,C6,C8,C10,C12,C14,F2,H2,J2,F4,J4,F6,J6,F8,J8,F10,J10,F12").Select
    Range("F12").Activate
    Selection.ClearContents
    End Sub


    i nomi delle stampanti sono:

    Zebra S4M su Ne00......................per "B STAMPA ETICHETTE TRASFUSIONE.xlsx"

    HP LaserJet P2035 su Ne04............per "C STAMPA MODULO DI CONSEGNA.xlsx"

    scusami se continnuo ad assillarti ma voglio arrivare al traguardo.

    RISPONDIMI PER FAVORE

    GRAZIE E SCUSAMI NUOVAMENTE.



  • di Zer0Kelvin data: 11/12/2014 23:21:42

    Ciao.
    Ti allego sotto la macro modificata per funzionare con le due stampanti.
    Ho aggiunto i due punti alla fine di ciascun nome stampante, in quanto di solito i nomi di stampante in Excel terminano così.
    Come vedi, una volta ottenuto il nome della stampante, il meccanismo è semplice.
    Dovrebbe funzionare senza intoppi, almeno sul PC su cui hai rilevato i nomi delle stampanti.
     
    Sub StampaComplessiva()
    '
    ' StampaComplessiva Macro
    ' StampaComplessiva
    '
    Dim SavedPrinter
        SavedPrinter = ActivePrinter 'salva la stampante attuale
        ActivePrinter = "Zebra S4M su Ne00:" '<==IMPOSTA LA PRIMA STAMPANTE
        Windows("B STAMPA ETICHETTE TRASFUSIONE.xlsx").Activate
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
        IgnorePrintAreas:=False
        ActivePrinter = "HP LaserJet P2035 su Ne04:" '<==IMPOSTA LA SECONDA STAMPANTE
        Windows("C STAMPA MODULO DI CONSEGNA.xlsx").Activate
        ActiveWindow.SelectedSheets.PrintOut Copies:=3, Collate:=True, _
        IgnorePrintAreas:=False
        Windows("A MODULO ANAGRAFICA.xlsx.xlsm").Activate
        Range("C2,C4,C6,C8,C10,C12,C14,F2,H2,J2,F4,J4,F6,J6,F8,J8,F10,J10,F12").Select
        Range("F12").Activate
        Selection.ClearContents
        ActivePrinter = SavedPrinter 'ripristina la stampante attuale
    End Sub
    


  • STAMPA CON MACRO
    di ENZO62 data: 12/12/2014 07:38:05

    CIAO,
    Scusami la macro provata subito al lavoro, mi da un codice errore

    Questo:

    Errore di run-time '9' :
    indice non incluso nell'intervallo




  • di Zer0Kelvin data: 12/12/2014 14:26:13

    Qual è l'istruzione che provoca l'errore?
    I nomi dei files nelle due istruzioni
    Windows("B STAMPA ETICHETTE TRASFUSIONE.xlsx").Activate
    e
    Windows("A MODULO ANAGRAFICA.xlsx.xlsm").Activate
    sono corretti?
    I due files sono aperti?


  • STAMPA CON MACRO
    di ENZO62 data: 13/12/2014 15:45:19

    yuuuuuuu.........
    grazie Zer0Kelvin,
    avevi ragione tu forse dei tre file non avevo aperto bene uno..........................!!!!!!!!!
    ti ringrazio tantissimo..
    Spero mi possa perdonare, per tutto l'impegno che ti ho costretto a mettere in atto per farmi capire il tutto.
    GRAZIE..............

    :