Risultati da 1 a 3 di 3

Discussione: Stampa con macro Visual Basic

  1. #1
    Member
    Data Registrazione
    25-08-2004
    Località
    Milano
    Messaggi
    72

    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

  2. #2
    Software Zone Fanatic L'avatar di MANDRAKE
    Data Registrazione
    28-12-2002
    Messaggi
    3.100
    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

  3. #3
    Member
    Data Registrazione
    25-08-2004
    Località
    Milano
    Messaggi
    72
    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?

Segnalibri

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
  •