Stampare con piu stampanti

  • Stampare con una o più stampanti di K@rlo
    Rieccomi.
    ho un altro quesito da discuttere e cercare di risolvere con gli esperti di questo fantastico sito.
    nell'archivio del forum anno 2005 ho trovato questo 3d:
    http://excelvba.altervista.org/forum/storico/piustampanti.htm
    ho lo stesso problema:
    io devo stampare su una porta lpt1 con una funzione macro, e con un'altra macro mandare in stampa su una usb a scelta.
    le funzioni dovrebbero a modo mio essere distinte, cioè, una selezione manda in lpt un'altra selezione manda in usb, con due macro diverse.
    la proposta di mauro è un buon punto di partenza, ma il vba non accetta il nome della stampante "nomestampante su lpt1".
    purtroppo non ho molta dimistichezza con le funzioni "rare" del vba, ma la mia idea è questa:
    con una macro selezionare lpt1, con un'altra usb1, usb2 etc.
    chiedo a chi è più esperto di consigliarmi nella formulazione, la mia macro per la stampa comunemente usata nei miei programmi è la seguente:
    sub stampa_foglio1()
    n°_copie = sheets("formule").cells(30, 2)
    anteprima = sheets("formule").cells(32, 12)
    sheets("foglio1").select
    for v_copia = 1 to n°_copie
    range("b2:p9").select
    if anteprima = "si" then
    selection.printout copies:=1, preview:=true
    else
    selection.printout copies:=1, preview:=false
    end if
    next
    range("a1").select
    end sub
    le prime due riche selezionano il riquadro da stampare e decide l'anteprima a seconda del valore nel foglio "formule".

    a questo punto la funzione:
    selection.printout copies:=1, preview:=true

    è quella decisiva, ma come fare per scegliere la stampante?
    ringrazio anticipatamente.

    di K@rlo
    Ho letto vari 3d, nulla da fare.
    insomma, pare che con il vba non si possa decidere quale stampante utilizzare.
    nel frattempo, ho deciso di migliorare la macro con questo piccolo accorgimento, che consiglio a chi come me usa più stampanti:

    msgbox "la stampante in uso è : " & _
    application.activeprinter

    praticamente prima di inviare la stampa il metodo "activeprinter" unito all'oggetto "application" individua la stampante attiva.
    ho provato la funzione trovata nel precedente forum del 2005, modificandola alle mie esigenze:
    application.activeprinter = "nec pintwriter p2x su lpt1:"
    ma da errore di run-time '1004'

    spero qualcuno trovi una soluzione per raggirare questa mancanza del vba.

    di Tommy
    Io uso tranquillamente il comando application.activeprinter = "epson .... su lpt1:", l'unico problema è quando devo stampare su stampanti usb o di rete da più pc in quanto su ogni pc mi da un numero di usb diverso e devo fare quindi una macro per ogni pc, per il resto funziona perfettamente.
    prova a settare dal menu file - imposta pagina la stampante che devi usare per ogni foglio (a meno che non devi stampare lo stesso foglio sulle 2 stampanti) io hofatto cosi perchè davo stampare foglio 1 su stampante 2 e foglio 2 su stampante 2.
    ciao
     
    Application.ActivePrinter = "epson.... su LPT1:"

    di Apoben64
    Personalmente prediligo usare il registratore di macro che semplicemente mi dà il codice di ogni stamapnate che intendo usare , comprese quelle collegate ad una porta usb.

    di K@rlo
    Scusa apoben64 ma come ci riesci? mi da sempre errore "1004"?

    Ritenta di Apoben64
    Le macro indicate sono state create col registratore di macro.
    le due stampanti sono una di rete e una collegata con l'usb.
    riprova ad aprire un nuovo file, senza dati , e attivando il registratote selezioni menu-stampa-selezioni la stampante e dai invio , chiudi la registrazione . dovrebbe essere tutto qui. l'errore non si spiega! comunque excel certe volte ci fa anche impazzire !

     
    Sub Macro1()
        Application.ActivePrinter = "\\PCMILVA\HP LaserJet 4050 Series PCL su Ne10:"
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
            "\\PCMILVA\HP LaserJet 4050 Series PCL su Ne10:", Collate:=True
        Range("A2").Select
    End Sub
    Sub Macro2()
    
        Application.ActivePrinter = "HP LaserJet 3300 Series PCL 6 su Ne04:"
        ActiveWindow.SelectedSheets.PrintOut Copies:=1, ActivePrinter:= _
            "HP LaserJet 3300 Series PCL 6 su Ne04:", Collate:=True
        Range("A4").Select
    End Sub

    di K@rlo
    Ciao apoben64 e grazie per gli aiuti.
    ho provato con una stampante locale collegata con lpt1, ed ho verificato che impostando una stampante diversa come predefinita, l'altra stampante funziona seguendo le indicazioni della macro.
    le magie di excel e di apoben64.

    ora devo modificarla un pò per aggiungere la selezione in fase di stampa.
    grazie 1000.