È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!

Excel Forum Per condividere esperienze su Microsoft Excel

Importare script da una colonna excel a zoc terminal

  • Messaggi
  • OFFLINE
    Damianoproietti
    Post: 1
    Registrato il: 19/04/2016
    Città: VELLETRI
    Età: 41
    Utente Junior
    Office 365
    00 11/04/2021 11:37
    Ciao ragazzi ho provato a creare una routine vba che crea un file di testo e poi seleziona zoc e avvia la routine ma non funziona mi potete aiutare con la vostra conoscenza in qualche modo? Grazie a presto
  • OFFLINE
    alfrimpa
    Post: 4.650
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Master
    Excel 365
    00 11/04/2021 11:49
    Solo per curiosità cosa è zoc?

    Alfredo
  • OFFLINE
    Damianoproietti
    Post: 1
    Registrato il: 19/04/2016
    Città: VELLETRI
    Età: 41
    Utente Junior
    Office 365
    00 11/04/2021 12:40
    Zoc terminal è un emulatore rs232
  • OFFLINE
    rollis13
    Post: 1.108
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 11/04/2021 15:30
    Questa macro lancia l'applicazione:
    Option Explicit
    Sub avvia_applicazione()
        Shell("C:\Program Files\ZOC8\zoc.exe") 'path per versione x64
    End Sub
    Non avendo lumi su cosa stai cercando di fare e come, questo è il massimo dell'impegno che ci metterò.
    [Modificato da rollis13 11/04/2021 15:31]

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    Damianoproietti
    Post: 2
    Registrato il: 19/04/2016
    Città: VELLETRI
    Età: 41
    Utente Junior
    Office 365
    00 11/04/2021 17:46
    Scusami ti spiego meglio sul mio foglio excel ho tante script divise in colonne io dovrei premere un bottone ed inviare ed avviare una script alla volta su zoc per avere la traccia su excel e non perdermi la sequenza delle rutin e poi ritornare sul excel e marcare la rutine eseguita. se creo un unica rutin su zoc rischio di perdere il punto
  • OFFLINE
    Damianoproietti
    Post: 3
    Registrato il: 19/04/2016
    Città: VELLETRI
    Età: 41
    Utente Junior
    Office 365
    00 11/04/2021 17:50
    Grazie per la pronta risposta secondo te è fattibile?
  • OFFLINE
    rollis13
    Post: 1.109
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 11/04/2021 22:14
    Consulta nell' Help la voce Command Line Parameters.
    In Excel la riga sarà:
    Shell("C:\Program Files\ZOC8\zoc.exe" "/RUN:<scriptfile>")
    dove al posto del:
    <scriptfile>
    dovrai mettere una variabile che farà riferimento alle tue celle contenente lo script da lanciare.
    Volendo valorizzare una variabile 'cellaconscript' con le coordinate della cella probabilmente la riga operativa sarà:
    Shell("C:\Program Files\ZOC8\zoc.exe" "/RUN:" & cellaconscript )

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    Damianoproietti
    Post: 4
    Registrato il: 19/04/2016
    Città: VELLETRI
    Età: 41
    Utente Junior
    Office 365
    00 11/04/2021 23:14
    Mi dice che la cella è vuota
  • OFFLINE
    rollis13
    Post: 1.110
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 11/04/2021 23:55
    Certo che è vuota, era solo un esempio; devi crearti il codice per valorizzarla in base alla cella che intendi 'passare' a Zoc.
    Dato che non hai allegato nemmeno uno straccio di file esempio o qualche traccia del tuo progetto, vedi che non ho la sfera di cristallo ... e nemmeno voglia di studiarmi l'applicazione Zoc.

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    Damianoproietti
    Post: 5
    Registrato il: 19/04/2016
    Città: VELLETRI
    Età: 41
    Utente Junior
    Office 365
    00 12/04/2021 00:15
    Dal momento che inserisco run : cosa devo specificare per fargli leggere il testo scritto nella cella al del foglio1? Scusa per il disturbo
  • OFFLINE
    rollis13
    Post: 1.111
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 12/04/2021 09:31
    Allega un file con la stessa identica struttura e contenuti (oscurando eventuali dati sensibili) ... poi ti rimarrà solo di gestire l'esatta sintassi (come richiesto da Zoc) per l'invio con il /Run.
    [Modificato da rollis13 12/04/2021 09:32]

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    Damianoproietti
    Post: 6
    Registrato il: 19/04/2016
    Città: VELLETRI
    Età: 41
    Utente Junior
    Office 365
    00 12/04/2021 10:14
    Ciao come richiesto ti ho allegato il file
    grazie di nuovo
  • OFFLINE
    rollis13
    Post: 1.112
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 12/04/2021 11:49
    Per ora ti propongo questa soluzione dato che presumo che nella cartella 'Zoc6 Files' hai già i tuoi script salvati e numerati 1.txt ecc. così da verificare la sintassi dello Shell di Excel ed il Run di Zoc.
    Per semplificare il test senza utilizzare un bottone ti propongo di utilizzare l'evento 'BeforeDoubleClick' così facendo, con un doppioclick in riga 1 sul nome di uno degli script, fai avviare questa macro da mettere nel modulo del foglio.
    Option Explicit
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Cancel = True
        If Not Intersect(Target, Range("B1:AMC1")) Is Nothing Then 'per ora il range è statico
            Shell ("C:\Users\d.proietti\Desktop\zoc\zoc.exe /RUN: C:\Users\d.proietti\Documents\ZOC6 Files\" & Target.Value)
        End If
    End Sub
    Fatto questo, se il collaudo funziona, propongo di utilizzare una separata macro che generi un nuovo file script, a comando per quando fai una modifica alle righe di codice, oppure, automaticamente quando il file script non esiste nella cartella 'Zoc6 Files' (nuovo script).

    PS. ma eventuali righe vuote nel testo dello script sono un problema per Zoc ?
    [Modificato da rollis13 12/04/2021 11:50]

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    Damianoproietti
    Post: 7
    Registrato il: 19/04/2016
    Città: VELLETRI
    Età: 41
    Utente Junior
    Office 365
    00 12/04/2021 21:23
    ok apre zoc ma non avvia la rutine cliccata
  • OFFLINE
    rollis13
    Post: 1.113
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 12/04/2021 21:58
    Vabbè, quello ora è un problema tuo, sei tu che conosci Zoc ed i comandi che devono stare nel file parametro; te l'avevo già anticipato nel mio post #11.
    Ti allego una versione più completa della macro che ora comprende anche una parte che crea il file script. La macro va messa nel modulo del foglio con i testi.
    Option Explicit
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        'dichiaro le variabili
        Dim ur     As Long                            'ultima riga
        Dim ul     As Long                            'ultima colonna
        Dim riga   As Long                            'riga in esportazione
        Dim col    As Long                            'colonna cliccata
        Dim sPath  As String                          'percorso
        Dim sFile  As String                          'nome file
        Dim esiste As Long                            'esiste, che faccio ?
        'inibisci Modifica alla cella per DoppioClick
        Cancel = True
        'verifica se siamo nel range dei nomi file (riga 1 da B all'ultima colonna)
        ul = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
        If Not Intersect(Target, Range(Cells(1, 2), Cells(1, ul))) Is Nothing Then
            col = Target.Column
            ur = Cells(Rows.Count, col).End(xlUp).Row
            sPath = "C:\Users\d.proietti\Documents\ZOC6 Files\"
            sFile = Target.Value
            '----------eliminare se sta bene sovrascrivere sempre----------
            'verifica se esiste il file per non sovrascriverlo
            If Dir(sPath & sFile) <> "" Then
                esiste = MsgBox("Il file > " & sFile & " < già esiste, lo sovrascrivo ?", vbYesNo)
                If esiste = vbNo Then Exit Sub
            End If
            '--------------------------------------------------------------
            'apri in scrittura il file da creare
            Open sPath & sFile For Output As #1
            For riga = 2 To ur
                'Print #1, Cells(riga, col)            'con le righe vuote
                If Cells(riga, col) <> "" Then Print #1, Cells(riga, col) 'senza righe vuote
            Next riga
            'chiudi il file creato
            Close #1
            '----------eliminare se sta bene sovrascrivere sempre----------
            MsgBox "Fatto, script > " & sFile & " < creato in " & sPath
            '--------------------------------------------------------------
            'apri l'applicazione Zoc con il file come parametro
            Shell ("C:\Users\d.proietti\Desktop\zoc\zoc.exe /RUN:C:\Users\d.proietti\Documents\ZOC6 Files\" & Target.Value)
        End If
    End Sub
    Mentre se ti basta lanciare il file (quando sei riuscito ad ottenere l'esatta sintassi del Command Line) puoi usare al suo posto questa versione ridotta.
    Option Explicit
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        Dim ul     As Long
        Cancel = True
        ul = Cells(1, Cells.Columns.Count).End(xlToLeft).Column
        If Not Intersect(Target, Range(Cells(1, 2), Cells(1, ul))) Is Nothing Then
            Shell ("C:\Users\d.proietti\Desktop\zoc\zoc.exe /RUN:C:\Users\d.proietti\Documents\ZOC6 Files\" & Target.Value)
        End If

    PS. come mai in giro per la rete ho trovato esempi di file .ZRX mentre tu hai usato .TXT ? da dove hai ottenuto quest'informazione ?
    [Modificato da rollis13 12/04/2021 22:32]

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    Damianoproietti
    Post: 8
    Registrato il: 19/04/2016
    Città: VELLETRI
    Età: 41
    Utente Junior
    Office 365
    00 13/04/2021 10:30
    'apri l'applicazione Zoc con il file come parametro
    Shell ("C:\Users\d.proietti\Desktop\zoc\zoc.exe /RUN:" & Target.Value)

    questa linea cosi è corretta ma non deve riaprire una nuova finesta zoc con C:\Users\d.proietti\Desktop\zoc\zoc.exe ma deve aprire quella in uso
    grazie molte per la tua disponibilita
  • OFFLINE
    rollis13
    Post: 1.114
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 13/04/2021 11:26
    Dubito che questo sia possibile, in modo 'umano' caricare da Excel uno script in una sessione di Zoc già aperta oserei dire che è proprio un'impresa impossibile. Casomai è il contrario, è una macro specifica (Rexx forse) di Zoc che deve eseguire un determinato percorso caricando in sequenza quello che serve.
    Comunque, vedi se tra i Command Line di Zoc vi è un apposito parametro da aggiungere che permetta allo Shell di Excel di sfruttare una sessione già aperta. Secondo me è una prerogativa di Zoc di permettere più sessioni in contemporanea, pertanto ...
    [Modificato da rollis13 13/04/2021 11:28]

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    Damianoproietti
    Post: 9
    Registrato il: 19/04/2016
    Città: VELLETRI
    Età: 41
    Utente Junior
    Office 365
    00 17/04/2021 02:01
    Ciao ti ringrazio moltissimo per la tua disponibilità ad aiutarmi adesso ho risolto ma devo eliminare la funzione double click dalla macro vba devo inserire un pulsante che scorre colonna per colonna ad ogni click come la macro passo passo che ho inserito sul modulo allegato mi potresti dare una mano ad integrala grazie e a presto😀😀😀
  • OFFLINE
    rollis13
    Post: 1.115
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 17/04/2021 10:53
    Scusami ma non sono riuscito ad individuare questa macro:

    come la macro passo passo che ho inserito sul modulo allegato

    per capire esattamente quello che vorresti fare.
    In pratica, vuoi che con il pulsante si avvii un ciclo automatico partendo dal file della cella B1 fino all'ultimo file della riga 1, oppure, un menu a tendina od un menu a scorrimento (spinner) e una volta scelto il nome del file premendo il pulsante si avvii solamente quel file script.

    PS. cosa manca tra le tue macro per far funzionare il metodo DDE che hai individuato come soluzione, a me va in errore 13.

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    Damianoproietti
    Post: 10
    Registrato il: 19/04/2016
    Città: VELLETRI
    Età: 41
    Utente Junior
    Office 365
    00 17/04/2021 11:56
    In pratica quando ogni volta che schiaccio il pulsante deve patire dalla cella selezionata nella prima riga deve verificare se contiene il testo se non lo contiene passa alla successiva colonna la marca in verde ed esegue la macro che abbiamo inserito in precedenza e si ferma. quando ri schiaccio il pulsante passo alla successiva colonna e riesegue il tutto e cosi via ad ogni pressione del pulsante . NOTA.se vedi bene dove è descritta la tua macro sotto è riportata quella passo passo .
  • OFFLINE
    Damianoproietti
    Post: 11
    Registrato il: 19/04/2016
    Città: VELLETRI
    Età: 41
    Utente Junior
    Office 365
    00 17/04/2021 12:01
    Forse errore 13 che ti da è dovuto alla mancanza di qualche cosa su zoc perché la del presente fa partire la run per elaborazione del file su zoc
  • OFFLINE
    rollis13
    Post: 1.116
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 17/04/2021 12:27
    No, l'errore 13 è specifico di Excel (tipo non corrispondente), fa niente per il test la by-passo.

    Per ora, visto che è quasi ora di è pranzo, inserisci il nome della tua macro subito dopo la riga di lancio di Zoc tramite DDE e per avviare continua a fare doppioclick sulle celle in riga 1 e vediamo come gira.

    La tua macro fa cose inutili e poi dovrebbe chiamarsi 'colora...' non 'copia...' [SM=g27823]; in pratica deve solo colorare la colonna una volta eseguita (dico io, dopo che è stata eseguita, non prima) dato che non vedo altre parti del progetto che ne facciano uso (poi facciamo un po' di pulizia). ]
            '--------------------------------------------------------------
            'apri l'applicazione Zoc con il file come parametro
            ZocDDE = DDEInitiate("ZOC", "Comm-Debug"): DDEExecute ZocDDE, "ZocDoString ^run=" & sFile
            coloracolonnepassopasso
        End If
    End Sub
    
    Sub coloracolonnepassopasso()
        ActiveCell.EntireColumn.Offset(0, 0).Select
        With Selection.Interior
            .PatternColorIndex = xlAutomatic
            .Color = 5296274
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
    End Sub
    [Modificato da rollis13 18/04/2021 00:20]

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    Damianoproietti
    Post: 12
    Registrato il: 19/04/2016
    Città: VELLETRI
    Età: 41
    Utente Junior
    Office 365
    00 17/04/2021 13:02
    Ok ho implementato quello che mi hai detto.
    procediamo con il secondo step?
    grazie moltissimo😀😀
  • OFFLINE
    rollis13
    Post: 1.117
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 17/04/2021 15:28
    ... e non credo che il problema 'errore 13' sia dovuto alla versione di Excel.
    Ecco la versione adattata all'uso del Pulsante2_Click e con qualche ritocco. Per un migliore effetto visivo suggerisco di Bloccare la prima colonna.
    Option Explicit
    Sub Pulsante2_Click()
        'dichiaro le variabili
        Dim riga   As Long                            'riga in esportazione
        Dim col    As Long                            'colonna in elaborazione
        Dim sPath  As String                          'percorso
        Dim sFile  As String                          'nome file
        Dim esiste As Long                            'esiste, che faccio ?
        'ciclo sui nomi file (riga 1 da B all'ultima colonna)
        For col = 2 To Cells(1, Cells.Columns.Count).End(xlToLeft).Column
            With Range(Cells(1, col).Address)
                If .Value <> "" Then                  'verifico se c'è un nome file altrimenti passa oltre
                    If .Interior.Color <> 5296274 Then 'verifico se già eseguita (colorata)
                        sPath = "C:\Users\d.proietti\Documents\ZOC8 Files\"
                        sFile = .Value
                        '----------eliminare se sta bene sovrascrivere sempre----------
                        If Dir(sPath & sFile) <> "" Then 'verifica se esiste il file per non sovrascriverlo
                            esiste = MsgBox("Il file > " & sFile & " < già esiste, lo sovrascrivo ?", vbYesNo)
                            If esiste = vbNo Then Exit Sub
                        End If
                        '--------------------------------------------------------------
                        'apri in scrittura il file da creare
                        Open sPath & sFile For Output As #1
                        'ciclo sulle righe dello script
                        For riga = 2 To Cells(Rows.Count, col).End(xlUp).Row
                            'Print #1, Cells(riga, col)    'con le righe vuote
                            If Cells(riga, col) <> "" Then Print #1, Cells(riga, col) 'senza le righe vuote
                        Next riga
                        'chiudi il file creato
                        Close #1
                        '----------eliminare se sta bene sovrascrivere sempre----------
                        MsgBox "Fatto, script > " & sFile & " < creato in " & sPath
                        '--------------------------------------------------------------
                        'inoltra all'applicazione Zoc il file script come parametro
                        ZocDDE = DDEInitiate("ZOC", "Comm-Debug"): DDEExecute ZocDDE, "ZocDoString ^run=" & sFile
                        .EntireColumn.Interior.Color = 5296274 'colora la colonna appena elaborata
                        .Select                       'seleziona il nome file appena elaborato
                        'uscita per completata elaborazione dello script
                        Exit For
                    End If
                End If
            End With
        Next col
    End Sub
    [Modificato da rollis13 17/04/2021 15:30]

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
  • OFFLINE
    Damianoproietti
    Post: 13
    Registrato il: 19/04/2016
    Città: VELLETRI
    Età: 41
    Utente Junior
    Office 365
    00 01/05/2021 11:48
    Ti ringrazio moltissimo per la mano che mi hai dato a risolvere questo problema funziona benissimo buon primo maggio
  • OFFLINE
    rollis13
    Post: 1.129
    Registrato il: 16/08/2015
    Città: CORDENONS
    Età: 67
    Utente Veteran
    Excel 2016-32bit Win11
    00 01/05/2021 12:34
    Grazie del riscontro positivo [SM=g27811].

    ______________________________________________________________
    C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)