Condividi:        

Collegamento CERCA.VERT su file OneDrive

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Collegamento CERCA.VERT su file OneDrive

Postdi mat86 » 07/09/16 12:40

Buongiorno a tutti. Sono nuovo, non sono molto esperto di excel e spero che possiate darmi una mano con il mio problema.

Ho un file sul quale ho una funzione CERCA.VERT che prende i dati da due fogli di un secondo file esterno (DATABASE). La formula è la seguente:

=CERCA.VERT(A2;'C:\Users\User1\OneDrive\Documenti\DATABASE.xlsm!Tabella1[#Dati];3;FALSO)

Entrambe i file si trovano sulla cartella di Onedrive e quindi sono sincronizzati per poter essere utilizzati da più computer.
Impostando la formula,e di conseguenza il collegamento tra i due file, dal Computer di User1 (percorso C:\Users\User1\OneDrive\Documenti\DATABASE.xlsm), se apro il file dal Computer di User2 mi dice che non è possibile trovare il collegamento perchè è riferito al file sul Compurer di User1, non restituendomi dunque nessun dato.

Vorrei quindi poter inserire nella formula un collegamento anche a C:\Users\User2\OneDrive\Documenti\DATABASE.xlsm (ed eventualmente farlo per altri pc) in modo che se non trova il collegamento da una parter lo trova da un altro.

Anticipo che mi mi era stata proposta questa soluzione:
Mettere in A1--> =STRINGA.ESTRAI(CELLA("nomefile");10;RICERCA("OneDrive";CELLA("nomefile");1)-11)
E in A2--> =CERCA.VERT(A2;"'C:\Users\"&$A$1 &"\OneDrive\Documenti\DATABASE.xlsm!Tabella1[#Dati]";3;FALSO)
Ma inspigabilmente mi restituisce #VALORE! nonostante che i passaggi di calcolo risultino giusti (sostitutendo dunque "&$A$1 &" in User1 o User2) fino al momento di dover restituire il valore.

Sottolineo che per me è importante poter interrompere il flusso dei dati e credo che questo si possa fare solo con un collegamento diretto al file.

Uso Excel 2013

Vi ringrazio in anticipo per l'aiuto che vorrete darmi.
mat86
Newbie
 
Post: 4
Iscritto il: 07/09/16 12:36

Sponsor
 

Re: Collegamento CERCA.VERT su file OneDrive

Postdi Anthony47 » 08/09/16 00:49

La formula si aspetta, come secondo parametro, l'indirizzo di un'area dati; quella che invece calcoli e' una stringa di testo.
Per convertire quella stringa in un indirizzo, puoi usare la funzione Indiretto; quindi
Codice: Seleziona tutto
=CERCA.VERT(A2;Indiretto("'C:\Users\"&$A$1 &"\OneDrive\Documenti\DATABASE.xlsm!Tabella1[#Dati]");3;FALSO)

Ma questa formula ti restituira' un errore #RIF!, se il file DATABASE non e' contemporaneamente aperto su Computer2; infatti Indiretto richiede che il file risultante sia aperto, come indicato nell'help on line della funzione.

Quindi se il tuo processo garantisce che Database.xlsm sia aperto quando estrai le informazioni, l'uso di Indiretto (come mostrato sopra) risolvera' il problema; altrimenti troveremo un ulteriore artificio.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Collegamento CERCA.VERT su file OneDrive

Postdi mat86 » 08/09/16 09:21

Ciao, grazie innanzitutto.

Con INDIRETTO funziona ma rimane il grosso problema per me di non poter "congelare i dati" quando ne ho la necessità.
Con il collegamento diretto al file posso non aggiornare ed interrompere il collegamento quando voglio in modo da far rimanere solo i valori inseiriti. Io vorrei riuscire a continuare a far questo ma seplicemnte collegarlo a due o più file in modo che se non lo trova su un computer lo trova su un altro.

Non so perchè ma già adesso per inseire i dati il file DATABASE deve essere aperto, ma non per consultarli dove posso semplicemente indicare di non aggiornare il collegamento. Ci fosse la soluzione per fare quanto sopra anche con il file chiuso sarebbe il massimo!
mat86
Newbie
 
Post: 4
Iscritto il: 07/09/16 12:36

Re: Collegamento CERCA.VERT su file OneDrive

Postdi mat86 » 12/09/16 08:44

Nessuno a qualche altro suggerimento a riguardo?

Grazie
mat86
Newbie
 
Post: 4
Iscritto il: 07/09/16 12:36

Re: Collegamento CERCA.VERT su file OneDrive

Postdi Anthony47 » 12/09/16 14:39

Allora hai bisogno di cambiare il "collegamento", che richiede una macro.
Ad esempio:
Codice: Seleziona tutto
Sub LinkMod()
Dim LArr, xleLink, nWeLink, I As Long, TWPath As String, mySplit
'
LArr = ActiveWorkbook.LinkSources(xlExcelLinks)
TWPath = ThisWorkbook.Path
'
For Each xleLink In LArr
    mySplit = Split(xleLink, "\", , vbTextCompare)
    nWeLink = TWPath & "\" & mySplit(UBound(mySplit))
    ActiveWorkbook.ChangeLink Name:=xleLink, NewName:=nWeLink, Type:=xlExcelLinks
Next xleLink
'
End Sub

La macro va lanciata "all'occorrenza".

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Collegamento CERCA.VERT su file OneDrive

Postdi mat86 » 12/09/16 15:51

Anthony47 ha scritto:Allora hai bisogno di cambiare il "collegamento", che richiede una macro.
Ad esempio:
Codice: Seleziona tutto
Sub LinkMod()
Dim LArr, xleLink, nWeLink, I As Long, TWPath As String, mySplit
'
LArr = ActiveWorkbook.LinkSources(xlExcelLinks)
TWPath = ThisWorkbook.Path
'
For Each xleLink In LArr
    mySplit = Split(xleLink, "\", , vbTextCompare)
    nWeLink = TWPath & "\" & mySplit(UBound(mySplit))
    ActiveWorkbook.ChangeLink Name:=xleLink, NewName:=nWeLink, Type:=xlExcelLinks
Next xleLink
'
End Sub

La macro va lanciata "all'occorrenza".


Ciao


Scusami non ho capito cosa andrebbe a fare questa macro? Dovrei copiarla sul file dove ho inserito la formula CERCA.VERT?
Cosa intendi per lanciata all'occorrenza?
mat86
Newbie
 
Post: 4
Iscritto il: 07/09/16 12:36

Re: Collegamento CERCA.VERT su file OneDrive

Postdi Anthony47 » 12/09/16 22:53

La macro serve a modificare i collegamenti presenti sul tuo file; l'ho modificata in modo che (col nuovo codice) quando la lanci ti segnali se ci sono eventuali "collegamenti morti" e ti chiede, per ogni collegamento, se vuoi aggiornarlo oppure no. Questo evita di chiarire che cosa intendevo per "lanciare all'occorrenza".
Il nuovo codice e' questo:
Codice: Seleziona tutto
Sub LinkMod()
Dim LArr, xleLink, nWeLink, I As Long, TWPath As String, mySplit
'
LArr = ActiveWorkbook.LinkSources(xlExcelLinks)
TWPath = ThisWorkbook.Path
'
For Each xleLink In LArr
    If Dir(xleLink) = "" Then
        rispo = MsgBox("Il link " & xleLink & " e' disfunzionante" & vbCrLf & _
            "Premi SI per aggiornarlo, premi NO per non aggiornarlo", vbYesNo)
        If rispo = vbYes Then
            mySplit = Split(xleLink, "\", , vbTextCompare)
            nWeLink = TWPath & "\" & mySplit(UBound(mySplit))
            ActiveWorkbook.ChangeLink Name:=xleLink, NewName:=nWeLink, Type:=xlExcelLinks
        End If
    End If
Next xleLink
'
End Sub

Operativamente, partendo da Excel:
-premi Alt-F11 per aprire l'editor delle macro
-Menu /Inserisci /Modulo
-Copia il codice e incollalo nel frame dx del modulo appena creato

Poi torna su Excel e, quando vuoi, lancia la macro LinkMod:
-premi Alt-F8
-seleziona LinkMod dall'elenco di macro disponibili
-premi Esegui

Dopo questa modifica suggerirei di fare in modo che la LinkMod venga lanciata automaticamente all'apertura del file:
-Quando sei nell'editor delle macro, individua all'interno del VBAProject del tuo file il modulo "ThisWorkbook" (o QuestaCartellaDiLavoro, a seconda della versione).
-doppioclick sulla voce ThisWorkbook
-inserisci questo codice nel frame vuoto di dx:
Codice: Seleziona tutto
Private Sub Workbook_Open()
    Call LinkMod
End Sub

In questo modo eventuali link inesistenti saranno individuati direttamente all'apertura del file e ti sara' chiesto se vuoi correggerli o no.

Il file di cui ti parlo e' quello che estrae i dati dal file DATABASE.xlsm

E' piu' chiaro?
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Collegamento CERCA.VERT su file OneDrive":


Chi c’è in linea

Visitano il forum: Nessuno e 23 ospiti