Collegamento iperttestuale



  • Collegamento iperttestuale
    di trump61 data: 20/03/2016 20:30:43

    Ciao sono di nuovo qui. Sto cercando di realizzare un piccolo database che riempio sfruttando quattro dati di una scheda di lavoro che compilo con una userform, lavoro che avete già visto. l' idea sarebbe che consultando i database cliccando su un dato di quelli in tabella mi aprisse una determinata scheda salvata.
    Con questo piccolo codice mi ricavo dalla data un numero per identificativo della scheda e lo unisco al nome della stazione e uso questa cosa per salvare il file in una cartella in più trasferisco dei dati in una database che mi serviranno per ricercare la scheda. ho pensato di far diventare il numero identificativo che sta in un campo del database un collegamento ipertestuale, e con l'aiuto del registratore mi è uscito questo codice. Non era proprio quello ho cercato di modificarlo alle mie esigenze ma ho i seguenti problemi.
    1) non posso usare Range("D4").Select perché ad ogni nuova immissione di dati il numero di riga cambia.
    2) il collegamento ipertestuale che vado a creare non tiene conto dell X quindi mi ritrovo con ad esempio 20032016, invece che Termini20032106 che sarebbe il nonme con cui ho savato il file e se nel primo caso non ho trovato una soluzione ma forse ci arrivo nel secondo caso non capisco perchè quando salva il collegamento non tiene conto della X.
    Poi se aveste una soluzione diversa di come poter richiamare il file invece di usare il collegmento ipertestuale sarebbe ben accetta.
    Ciao e Grazie
     
    Option Explicit
    Sub alpha()
    Dim sh2 As Worksheet: Set sh2 = Worksheets("DataBase")
    Dim sh1 As Worksheet: Set sh1 = Worksheets("Scheda")
    Dim X, Y, M, N As String
    Dim nriga As Long
    M = sh1.Cells(9, 2).Value
    N = Mid(M, 2, 2) & Mid(M, 6, 2) & Mid(M, 10, 4)
    nriga = 3
    While Cells(nriga, 3) <> ""
    nriga = nriga + 1
    
    
    
    Sub iper()
    '
    ' iper Macro
    '
    
    '
    X = Battistini
    Y = 20032016
        Sheets("DataBase").Select
        Range("D4").Select
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
            "..Schede2016" & X & "" & Y & ".xlsm"
    End Sub
    Wend
    sh2.Cells(nriga, 1) = sh1.Cells(9, 6).Value
    sh2.Cells(nriga, 2) = sh1.Cells(9, 8).Value
    sh2.Cells(nriga, 3) = sh1.Cells(9, 2).Value
    sh2.Cells(nriga, 4) = N
    X = sh1.Cells(9, 6).Value
    Y = N
    sh1.Select
        sh1.Copy
    On Error Resume Next
        ActiveWorkbook.SaveAs Filename:= _
            "C:Schede2016" & X & "" & Y & ".xlsm", FileFormat:= _
            xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    
    
    End Sub



  • di trump61 data: 21/03/2016 04:26:44

    Chiedo scusa si è mischiato il codice
     
    'Codice 1
    Option Explicit
    Sub alpha()
    Dim sh2 As Worksheet: Set sh2 = Worksheets("DataBase")
    Dim sh1 As Worksheet: Set sh1 = Worksheets("Scheda")
    Dim X, Y, M, N As String
    Dim nriga As Long
    M = sh1.Cells(9, 2).Value
    N = Mid(M, 2, 2) & Mid(M, 6, 2) & Mid(M, 10, 4)
    nriga = 3
    While Cells(nriga, 3) <> ""
    nriga = nriga + 1
    Wend
    sh2.Cells(nriga, 1) = sh1.Cells(9, 6).Value
    sh2.Cells(nriga, 2) = sh1.Cells(9, 8).Value
    sh2.Cells(nriga, 3) = sh1.Cells(9, 2).Value
    sh2.Cells(nriga, 4) = N
    X = sh1.Cells(9, 6).Value
    Y = N
    sh1.Select
        sh1.Copy
    On Error Resume Next
        ActiveWorkbook.SaveAs Filename:= _
            "C:Schede2016" & X & "" & Y & ".xlsm", FileFormat:= _
            xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    
    
    End Sub
    
    
    'Codice2
    Sub iper()
    '
    ' iper Macro
    '
    
    '
    X = Battistini
    Y = 20032016
        Sheets("DataBase").Select
        Range("D4").Select
        ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
            "..Schede2016" & X & "" & Y & ".xlsm"
    End Sub
    
    



  • di patel data: 21/03/2016 07:54:59

    allega un file di esempio per testare il codice





  • di trump61 data: 21/03/2016 15:55:31

    Ciao ho allegato mil file, credo già abbiate visto questo file, comunque il suo funzionamento è il seguente, clikkando sulla parte grigia dove c'è scritto SMR000.6 si apre una userform che una volta compilata riempie una parte della scheda clikkando su inserisci dati o simile si apre un altra userform che permette di comlpetare la scheda. Ora il codice che ho postato e che lo so può avviare solo dall' editor perchè sto provando a farlo funzionare dovrebbe e ripeto dovrebbe salvare in una tabella nel Foglio DataBase la data, la stazione, e il nominativo dei deviatoi interessati, poi con una parte del codice tolgo gli slash alla data e ne ricavo un numero che ha due funzioni uno lo concateno con il nome della stazione e ci creo il nome da assegnare al file che vado a salvare in una cartella che ho chiamato Schede2016, l'altro lo vado ad inserire in una colonna della tabella, e se riesco a farlo diventare automaticamente un collegamento ipertestuale usarlo per richiamare la scheda salvata per poterla consultare. Ora io ho pensato di usare questo metodo per potere rintracciare la scheda ed aprirla, ma sono ben acette altre soluzioni per fare ciò
    Ciao e grazie



  • di trump61 data: 23/03/2016 01:31:38

    Grazie lo stesso ho risolto in altro modo



  • di patel data: 23/03/2016 07:41:06

    una discussione è risolta se viene riportata la soluzione





  • di trump61 data: 24/03/2016 00:32:45

    Ciao, comincio con il dire che ho cambiato il sistema di come realizzare il mio file. Ho preso la decisione di cambiare rotta dopo aver consultato un post di qualche tempo fa qui sul forum, nel quale dopo aver dato la soluzione al neofita di turno come me “Vecchio Frac” sconsigliava di usare il collegamento ipertestuale, ho fatto mio il suo consiglio e ho cambiato direzione. Lo scopo del mio ile è il seguente: compilare una scheda di lavoro per poterla stampare questo perché sia più leggibile che se scritta a mano. Questo lo avevo già ottenuto, poi mi sono detto perché oltre ad avere la possibilità di stamparla non l’archivio e la rendo disponibile all’ occorrenza per stamparla o consultarla? Così dai dati che inserisco nella scheda estraggo dei dati da inserire in una tabella di un mini Database che mi riconducessero alla scheda che si vuole recuperare, e trovare un modo per aprire il file salvato in precedenza all’ atto della compilazione della scheda. Primo problema era il nome da assegnare al file in fase di salvataggio o optato per il nome della stazione seguito dalla data di lavorazione, soltanto che non potevo usare gli slash quindi usando un codice cioè il primo immesso o reso la data soltanto un numero, in oltre con questo codice che sta in un commandButton inserisco i dato nella mia tabella mi ricavo il numero che uso per dare un nome al file che sempre con questo file salvo in una cartella che ho chiamato Schede2016, ho salvato soltanto il foglio Scheda usando queste due righe:
    sh1.Select
    sh1.Copy
    Aprendo una terza Userform ( tutto quello che ho ottenuto precedentemente l’ho fatto con l’aiuto di 2 Userform) da dove inserisco i dati per i miei criteri di ricerca, devo dire che ho avuto un po di problemi con la data che alla fine ho risolto inserendo nella UserForm_Initialize la stringa
    TextBox3 = Format(TextBox3, "dd/ mm /yyyy")
    Con il secondo codice quindi estraggo i miei dati e li rendo leggibili in un atra userform dove in caso di risulti multipli ho inserito due pulsanti che mi scrollano uno verso il basso uno verso l’alto i risultati, poi con il terso pulsante vado ad aprire il file da me desiderato.
    Visto che ci sono vi chiedo un aiuto perché mi sono intoppato mentre stavo rifinendo il file, in pratica con un quarto codice inserito anche esso in un commanbutton ripulisco la tabella dai criteri immessi e dai risultati ottenuti, avevo pensato di aggiungerlo alla fine del terzo codice cioè quello che apre il file ma mi va in errore e non mi spiego perché, forse è perché sono un neofita o forse perché ho spremuto tutto me stesso per arrivare fino a qui, un aiuto o una spiegazione sarebbe ben accetta. Il quarto codice è quello che vorrei aggiungere

     
    Dim sh2 As Worksheet: Set sh2 = Worksheets("DataBase")
    Dim sh1 As Worksheet: Set sh1 = Worksheets("Scheda")
    Dim X, Y, M, N As String
    Dim nriga As Long
    M = sh1.Cells(9, 2).Value
    N = Mid(M, 1, 2) & Mid(M, 4, 2) & Mid(M, 7, 4)
    sh2.Activate
    sh2.Cells(65000, 1).End(xlUp).Offset(1, 0).Select
    ActiveCell.Offset(0, 0).Value = sh1.Cells(9, 6).Value
    ActiveCell.Offset(0, 1).Value = sh1.Cells(9, 8).Value
    ActiveCell.Offset(0, 2).Value = sh1.Cells(9, 2).Value
    ActiveCell.Offset(0, 3).Value = N
    X = sh1.Cells(9, 6).Value
    Y = N
    sh1.Select
        sh1.Copy
    On Error Resume Next
        ActiveWorkbook.SaveAs Filename:= _
            "C:Schede2016" & X & "" & Y & ".xlsm", FileFormat:= _
            xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    
    secondo codice
    Private Sub CommandButton2_Click()
    Dim sh1 As Worksheet: Set sh1 = Worksheets("Scheda")
    Dim sh2 As Worksheet: Set sh2 = Worksheets("DataBase")
    Dim numrec As Long
    Dim alfa As Range
        sh2.Range("A2") = UserForm4.TextBox2.Text
        sh2.Range("B2") = UserForm4.ComboBox10.Text
        sh2.Range("C2") = UserForm4.TextBox3.Text
        numrec = sh2.Range("A1").End(xlDown).Row
     sh2.Range("A1:D" & numrec).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=sh2.Range("A1:D2"), CopyToRange:=sh2.Range("G1:J1"), Unique:=False
     sh2.Activate
     sh2.Range("G3").Select
    UserForm3.TextBox2 = ActiveCell.Value
    UserForm3.TextBox3 = ActiveCell.Offset(0, 1).Value
    UserForm3.TextBox4 = ActiveCell.Offset(0, 2).Value
    UserForm3.TextBox5 = ActiveCell.Offset(0, 3).Value
    UserForm3.Show
    End Sub
    
    terzo codice
    
    Private Sub CommandButton1_Click()
    Dim F, R As String
    F = UserForm3.TextBox2.Text
    R = UserForm3.TextBox5.Text
          Workbooks.Open Filename:="C:Schede2016" & F & "" & R & ".xlsm", _
            UpdateLinks:=0
     End Sub
    
    4 codice
    Private Sub CommandButton3_Click()
    Dim sh2 As Worksheet: Set sh2 = Worksheets("DataBase")
    Dim sh1 As Worksheet: Set sh1 = Worksheets("Scheda")
        Dim S As Long
        sh2.Range("$A$2:$D$2") = ""
        S = sh2.Range("G1").End(xlDown).Row
        sh2.Range("G1:J" & S) = ""
        UserForm4.ComboBox1 = ""
        UserForm4.ComboBox2 = ""
        UserForm4.ComboBox3 = ""
        UserForm4.ComboBox4 = ""
        UserForm4.ComboBox5 = ""
        UserForm4.ComboBox6 = ""
        UserForm4.ComboBox7 = ""
        UserForm4.ComboBox8 = ""
        UserForm4.ComboBox9 = ""
        UserForm4.ComboBox10 = ""
        UserForm4.TextBox2 = ""
        UserForm4.TextBox3 = ""
        sh1.Activate
        sh1.Range("A1").Select
        Unload Me
    End Sub
    
    



  • di patel data: 24/03/2016 09:04:17

    il foglio database non c'è nel file, quindi non è possibile testare





  • di trump61 data: 24/03/2016 13:07:46

    ho allegati il file



  • di patel data: 24/03/2016 13:23:11

    come posso testare senza introdurre dati che non conosco ?





  • di trump61 data: 24/03/2016 16:23:02

    Ciao per testare il file è necessario che inserisci la data che nel caso di inserire dati in una nuova scheda la puoi selezionare sulla combobox tra tre date disponibili poi gli altri dati appaiono sulle successive combobox che tu puoi scegliere, clicchi poi su "inserire dati" e si apre una seconda userform, per provare il file non è necessario inserire altri dati basta cliccare su inserisci dovrebbe salvare il file in C:Schede2016
    aggiornale la tabella del foglio Database cliccando poi sulla parte grigia del foglio scheda dove c'è scritto SMR 000.60 mi pare si riapre la userform che compare quando si apre il file e clikkando su ricerca si apre un altra userform dove si può inserire una data o no, se si scegli di mettere la data bisogna cliccare su immetti data( questa è una parte che vorrei automizzare ma anche qui ho avuto problemi), poi tramite le combox si scelgono gli altri criteri e clikkkando su ricerca si apre un altra userfor da dove si possono vedere i dati e scgliere se aprire il file (Scheda). Vorrei fare in modo che il codice che sta sul pulsante Fine Ricerca dopo il codice che apre il file in modo che il foglio DataBase torni allo stato iniziale ma mi va in errore. C' è da sistemare ancora qualcosa ma diciamo che fa quello che mi serviva, certamente i codici saranno scritti in maniera pessima ma questo è il mio livello di conoscenza del VBA.
    Grazie per la tua attenzione Spero si capisca quello che ho scritto



  • di patel data: 24/03/2016 17:59:50

    troppo complicato, mi va in errore perché non trova il database, ma non so se ho inserito dati errati o se il problema è un altro





  • di trump61 data: 25/03/2016 23:45:46

    Diciamo che al 90% funziona ci sono delle piccole sbavature da migliorare e cambiare. Dovrei farti un corso di Segnalamento ferroviario per spiegarti i dati da inserire non credo che tu ne abbia voglia e tempo . Comunque sei gentilissimo a cercare di darmi un aiuto, tu e gli altri esperti di questo forum spesso mi avete tolto dai guai quindi per me siete come dei guru. ne approfitto per fare gli auguri a tutti di Buona Pasqua