| 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. |
|