-
Stampa con macro Visual Basic
Ciao a tutti,
ho cercato tanto nel forum e nella rete ma non ci sono esaustive spiegazioni.
Ho creato una macro in visualbasic che stampa la pagina corrente di excel su di una stampante collegata ad un altro computer tramite porta USB.
La macro è la seguente:
Application.ActivePrinter = _
"\\xx.xx.xx.xxx\nome stampante su Ne05:"
Activewindow.selectedsheets.printout copies:=1, activeprinter:= _
"\\xx.xx.xx.xxx\nome stampante su Ne05:", collate:=true
La macro funziona perfettamente ma SOLO DA UN PC della rete!!!
Se provo a stampare sulla stessa stampante ma da un altro computer eseguendo la stessa macro, visual basic va in errore.
Ho notato che il problema è su quello strano "Ne05" che ad ogni pc sembra proprio essere diverso:
Pc1 = Ne05
Pc2 = Ne03
Pc3 = Ne02
Sono configurati tutti allo stesso modo ma se quell'NE fosse uguale per tutti, funzionerebbe tranquillamente.
C'è un modo per risolvere il problema?
Grazie infinite a tutti per le risposte
-
Software Zone Fanatic
Prova questa soluzione non l'ho provata ma la logica mi pare corretta
VBA Visual Basic for Applications (Microsoft) - Application.ActivePrinter port name in Excel ???
1) Copia questa funzione
2) la richiami passando il nome della stampante (myprinter)
Function NetworkPrinter(ByVal myprinter As String)
On Error Resume Next
Dim NetWork As Variant
Dim X As Integer
'/// Define NetWork Array \\\
NetWork = Array("Ne00:", "Ne01:", "Ne02:", "Ne03:", "Ne04:", _
"Ne05:", "Ne06:", "Ne07:", "Ne08:", _
"Ne09:", "Ne10:", "Ne11:", "Ne12:", _
"Ne13:", "Ne14:", "Ne15:", "Ne16:", _
"LPT1:", "LPT2:", "File:", "SMC100:")
'Setup printer to Print
X = 0
TryAgain:
On Error Resume Next
'Printer
Application.ActivePrinter = myprinter & Prt_On & NetWork(X)
If Err.Number <> 0 And X < 16 Then
X = X + 1
GoTo TryAgain
ElseIf Err.Number <> 0 And X > 15 Then
GoTo PrtError
End If
On Error GoTo 0
NetworkPrinter = myprinter & Prt_On & NetWork(X)
errorExit:
Exit Function
PrtError:
'no printer found
NetworkPrinter = ""
Resume errorExit
End Function
quindi alla fine sarà
--------------------------------
Dim pathStampante as String
pathStampante = NetworkPrinter("\\xx.xx.xx.xxx\nome stampante")
Application.ActivePrinter = pathStampante
Activewindow.selectedsheets.printout copies:=1, activeprinter:= pathStampante, collate:=true
ciao
-
Grazie per la risposta MANDRAKE!
Magari no, ma inspiegabilmente, facendo un semplice aggiornamento di windows xp (dal winupdate del broswer di internet explorer) e dopo successivi riavvii del sistema la marco ha automaticamente cambiato il nome dell' "Ne"
"\\xx.xx.xx.xxx\nome stampante su Ne02:" --> "\\xx.xx.xx.xxx\nome stampante su Ne03:"
Possibile che si tratti di un office o windows disaggiornato rispetto alle versioni presenti sugli altri pc?
Permessi di Scrittura
- Tu non puoi inviare nuove discussioni
- Tu non puoi inviare risposte
- Tu non puoi inviare allegati
- Tu non puoi modificare i tuoi messaggi
-
Regole del Forum
Segnalibri