Collegamenti ipertestuali



  • Collegamenti ipertestuali
    di Mik data: 03/08/2017 16:27:18

    Ciao Ragazzi sono ancora qui a chiedere il vostro supporto!!!
    Vi spiego il mio caso:
    Sto cercando di gestire in aumatico un processo di archiviazione file. In pratica io invio un file ai miei colleghi che dovranno reinviarmelo compilato, dopodichè con cadenza casuale(quando ho tempo) devo controllare se questi file mi sono realmente tornati o meno.
    Nel File che vi allego ho scritto in una cella il percorso dove potrei trovare i file compilatie con il codice che sono riuscito a buttare giù essenzialmente gli faccio controllare riga per riga se il collegamento ipertestuale mi apre o meno il file compilato e nel caso in cui mi estragga il file compilo la cella di fianco con una stringa che mi farà capire se il file è tornato o meno.
    Ora vi spiego il problema:
    il mio problema nasce quando non ho il file perchè quando con il codice vado a tentare di aprire il collegamento ipertestuale mi esce una finerstra che, giustamente, mi avvisa di un "erore di run-time" e qui mi si ferma tutta l'esecuzione del codice.
    Domanda: Come posso fare per superare questo problemino? riuscite a darmi un supporto?
     
    Sub Collegamentoipertestuale()
    Dim x As Integer
    Dim CodClie As Integer
    Dim a As String
    
    For x = 2 To 10
    
    a = Worksheets("Compilate").Range("E" & x)
    CodClie = Worksheets("Compilate").Range("B" & x)
    
    Workbooks.Open Filename:=a
    If ActiveWindow.Visible = True Then
        ActiveWorkbook.Close False
        Worksheets("Compilate").Select
        Range("H" & x).Select
        ActiveCell.FormulaR1C1 = "Client tornata"
        Else
        Worksheets("Compilate").Select
        Range("H" & x).Select
        ActiveCell.FormulaR1C1 = "In attesa di client"
        
    End If
    Next x
    End Sub



  • di Vecchio Frac data: 03/08/2017 21:48:53

    cit. "con cadenza casuale(quando ho tempo) devo controllare se questi file mi sono realmente tornati o meno"
    ---> E come ti tornano? per email? o sono depositati in una cartella condivisa?

    cit. "gli faccio controllare riga per riga se il collegamento ipertestuale mi apre o meno il file compilato"
    ---> aiuto ^_^

    cit. " Come posso fare per superare questo problemino?"
    ---> gestisci l'errore con On Error e nella routine vedi se il codice di errore è il 9 (o quel che ti esce fuori...) e in quel caso procedi con segnare il caso anomalo

    Ma tutto secondo me si può gestire diversamente... domani guardo meglio ^_^





  • di Mik data: 04/08/2017 09:11:34

    rispondo a tutti i tuoi quesiti:
    cit. "E come ti tornano? per email? o sono depositati in una cartella condivisa?"
    ---> i file mi tornano per mail e in quel momento vengono salvati in una cartella condivisa nella rete aziendale;

    cit. "aiuto ^_^"
    ----> addirittura?? dici che è una cosa non molto furba? a me non sono venute in mente altre idee

    cit. "gestisci l'errore con On Error e nella routine vedi se il codice di errore è il 9 (o quel che ti esce fuori...) e in quel caso procedi con segnare il caso anomalo"
    --> non ho mai usato On Error ma credo di aver intuito l'idea, più tardi provo a buttare giù qualcosa.

    Nel frattempo grazieeeee



  • di Vecchio Frac data: 04/08/2017 10:02:12

    Ah adesso mi ricordo di te (se eri tu)... era il problema di automatizzare l'invio delle fatture ai clienti o di più fatture a un cliente e che avevamo risolto con un Dict.

    Perchè stavolta utilizzi un file xls e non un file xlsm?

    cit. "dici che è una cosa non molto furba? a me non sono venute in mente altre idee"
    ---> ^_^ ci sono (quasi) sempre molte altre soluzioni più performanti, a volte basta confrontarsi, soprattutto bisogna esporre bene il problema e chi ti ascolta deve capirlo :)





  • di Vecchio Frac data: 04/08/2017 10:08:53

    Dunque se come dici "i file mi tornano per mail e in quel momento vengono salvati in una cartella condivisa nella rete aziendale", perchè hai bisogno di controllare che i file ci siano? se tornano per mail li hai, se addirittura vengono già salvati in cartella condivisa sai anche che ci sono e dove sono.

    Comunque parli impropriamente di collegamenti ipertestuali visto che nel file di esempio non ce ne sono.
    E infine senza scomodare On Error (vedi che si danno informazioni imprecise se non si spiega bene la situazione?) esiste la funzione Dir() che ti dice se in una cartella c'è un file.
     
    Sub Collegamentoipertestuale()
    Dim x As Integer
    Dim a As String
    
    For x = 2 To 10
        a = Worksheets("Compilate").Range("E" & x)
        if dir(a) <> "" then
            'file found!
            Worksheets("Compilate").Range("H" & x) = "Client tornata"
        Else
            Worksheets("Compilate").Range("H" & x) = "In attesa di client"
        End If
    Next x
    End Sub






  • di Mik data: 04/08/2017 11:15:02

    Si si sono io!!!!!
    comunque hai ragione forse non mi sono spiegato troppo bene
    Mi spiego la situazione è questa:
    per politica aziendale si è scelto che per ogni cliente che si presenta alla ns porta dobbiamo far compilare ai colleghi dislocati all'interno dei punti vendita una scheda riepilogativa dei dati del cliente che verrà poi reinviata alla sede centrale dove verranno controllate, inserite in banca dati ed archiviate.
    Il processo intero è così composto:
    1- una volta a settimana estraggo un elenco dei nuovi clienti della settimana e passo la lista ad un ufficio preposto alla: 1-compilazione iniziale del file; 2-invio via mail ai punti vendita il file compilato 3- salva in automatico il file in una cartella (attraverso un altro codice ho automatizzato tuta questa parte di lavoro);
    2- il punto vendita compila la seconda parte del file e lo reinvia all'ufficio precedente che dovrà poi archiviarlo in un'altra cartella (quella dove poi io dovrò andare a contralle se i file ci sono realmente o meno).

    Arrivati a questo punto ho notato una falla nella procedura (i punti vendita spesso "snobbano" questo file e non lo reinoltrano. Dato che io non sempre vedo le mail di ritorno con i file compilati ho pensato di creare un qualcosa che in automatico mi vada a pescare nella cartella dove in teoria dovrebbero essere salvati i file e da li dividere in due le casistiche: 1- File presente--> ok 2- File non presente --> reinvio del file al punto vendita x sollecito.

    Spero di essere stato più esaustivo di prima e di avervi dato un ottica più generale del problema.
    In ogni caso questa volta utilizzo il file xls perchè in ufficio ho ancora Excel 2003 mentre sul mio pc (quello utilizzato il codice precendente) ho la versione 2013

    In più mi sono reso conto che nel file che vi ho allegato non ho rinominato il foglio di lavoro quindi copio la macro consigliata da VecchioFrac con la modifica del nome del foglio.

     
    Sub Collegamentoipertestuale()
    Dim x As Integer
    Dim a As String
    
    For x = 2 To 10
        a = Worksheets("Foglio1").Range("E" & x)
        if dir(a) <> "" then
            'file found!
            Worksheets("Foglio1").Range("H" & x) = "Client tornata"
        Else
            Worksheets("Foglio1").Range("H" & x) = "In attesa di client"
        End If
    Next x
    End Sub



  • di Vecchio Frac data: 04/08/2017 11:46:29

    Ora è più chiaro e ancor più chiaro mi è che ti consiglio Access per un lavoro come questo, dove ogni punto vendita (il tuo utente) utilizza una maschera per inserire/modificare i dati che vanno a finire in un database centralizzato (visto che parli di cartelle condivise vuol dire che hai una intranet aziendale).
    Eviteresti sia il giro di mail che il deposito di file separati da controllare. Ognuno, per la parte di competenza, avrebbe accesso alla base dati totale di cui vedrebbe tutto o una parte, in funzione dei permessi che deciderai di assegnare agli operatori. Con possibilità anche di utilizzare la mail ma solo come informativa che un certo passaggio è stato effettuato (se usate Outlook è anche meglio perchè rimane tutto in casa Microsoft).
    I punti vendita avrebbero un unico file da aprire la mattina, l'interfaccia Access di gestione, da cui compiere tutte le operazioni, anche obbligatorie prima della chiusura. Nessuno dovrebbe più preoccuparsi di inviare niente: i punto vendita inserisce dei dati in una maschera, il punto di arrivo si trova real time i dati inseriti, l'amministratore verifica che tutti abbiano inserito correttamente i dati e fa gli aggiornamenti alle maschere (essendo che la base dati è staccata dai singoli pc si possono fare le modifiche all'interfaccia senza dover ridistribuire ogni volta la base dati).
    Con un log degli accessi, con la possibilità di memorizzare lo storico, di recuperare le informazioni scritte da altri, eccetera eccetera.

    Se lo scenario ti spaventa puoi proseguire con Excel, ma dovresti almeno approfondire l'argomento per capire fin dove puoi arrivare (capisco anche che Access ha dei costi che non tutti possono sostenere).





  • di Mik data: 04/08/2017 17:47:25

    VecchioFrac, ho provato il tuo codice e come sempre è perfetto funziona da dio!!!!!
    Eliminato questo intoppo sono praticamente riuscito a finire il codice per gestire il processo al 99% mi mancano giusto un paio di piccolezze che con un pò di calma si aggiustano.
    Quindi che dire grazie grazie grazie