Stampare con più stampanti

Storico discussioni

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.

Cognolato Studio © 2005