Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

AUTOMATIZZARE COLLEGAMENTO TRA DUE FILE EXCEL

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

AUTOMATIZZARE COLLEGAMENTO TRA DUE FILE EXCEL

Postdi wittelsbach » 18/04/11 21:32

Vi spiego cosa avrei bisogno di fare: possiedo un file excel piuttosto elaborato, con molteplici funzioni che, attraverso l'implementazione manuale di dati, generano statistiche che si aggiornano in ogni momento della giornata.
A questo punto dovrei creare un altro file excel, identico al primo, che acquisisca l'aggiornamento del primo file, in modo tale da poter visualizzare e condividere il secondo file, senza dover toccare il primo.

In sostanza, con l'obiettivo di condividere un file (in sola lettura), vorrei che, aggiornando il file originale (il primo file), un altro file (identico e condiviso in rete) riuscisse ad acquisire automaticamente l'aggiornamento del primo attraverso una macro, senza dover chiudere e riaprire il secondo file.

Spero di essermi fatto capire.

grazie mille...
wittelsbach
Utente Senior
 
Post: 249
Iscritto il: 17/09/05 08:55

Sponsor
 

Re: AUTOMATIZZARE COLLEGAMENTO TRA DUE FILE EXCEL

Postdi Anthony47 » 19/04/11 00:12

La mia proposta e' che generi una copia del primo file tramite un Salva con nome; poi in questa copia al posto dei dati di input variabili inserisci un collegamento al primo file, con formule del tipo =[file1.xls]Foglio1!A1
In questo modo il secondo file eseguira' gli stessi calcoli del file1.

Sara' pero' necessario che File1 venga periodicamente salvato, per questo ti potra' essere utile una macro che usi il metodo OnTime per rischedulare ogni minuto una macro che salva il file.

Analogamente in File2 dovrai inserire periodicamente un Calcolate per avere l' aggiornamento dei dati remoti.

Se non bastano questi spunti posta ancora spiegando dove sei arrivato.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: AUTOMATIZZARE COLLEGAMENTO TRA DUE FILE EXCEL

Postdi ricky53 » 19/04/11 17:31

Ciao,
io ho avuto lo stesso problema ed ho risolto in questo modo:
1. ogni 30 minuti produco (tramite una macro specifica) dal file principale (sul quale lavoriamo solo in tre persone e mai contemporaneamente) un file opportuno assegnandogli "sempre" il nome "Copia_per_il_Gruppo.XLS"
2. il file vien salvato su un server in una cartella condivisa.
3. la macro di salvataggio salva solo i dati necessari alle attività del gruppo (fogli opportuni) con grafici e pivot se necessari.

Spero che il mio esempio possa esserti di aiuto
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: AUTOMATIZZARE COLLEGAMENTO TRA DUE FILE EXCEL

Postdi Flash30005 » 19/04/11 21:44

Vorrei dare anche io un apporto e una possibile soluzione scaturita da diverse esperienze fatte con i file condivisi
Creo un file excel che inserisce i dati in un file testo e dal quale ottengo le dovute statistiche (con macro nello stesso file.xls)
Il file testo lo posiziono in rete (quindi condiviso e tutti possono "scrivere")
mentre il file excel lo inserisco in un programma eseguibile .exe (realizzato con winrar che installa il file excel nel proprio Pc (creo anche un link sul desktop per il lancio del file .xls)
a questo punto ognuno è indipendente in quanto lancia il file excel contenuto nel proprio PC
quando scrive, scrive nel file testo che è in rete (l'apertura e chiusura è immediata)
la statistica richiesta è in tempo reale
ma... per fare tutto ciò occorrono troppi parametri e condizioni
quindi tutto quantoo detto è solo per chi ha un po' di esperienza e per dare un valido input per chi si vuole avventurare impegnandosi a fondo

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: AUTOMATIZZARE COLLEGAMENTO TRA DUE FILE EXCEL

Postdi wittelsbach » 19/04/11 22:20

@ anthony
Ciao e grazie.
Diciamo che, a causa della complessità e grandezza del primo file, risulta veramente mostruoso poter associare direttamente dei riferimenti come proponi. A questo proposito però vorrei chiarirmi alcuni dubbi:
1- in primis, non capisco come mai, se utilizzo formule del tipo "scarto, confronta", associate ad un file esterno, quando quest'ultimo è chiuso, il primo file non visualizzi alcun dato. Mentre, se utilizzo formule con semplici riferimenti (come proponi tu), anche se il file cui si fa riferimento è chiuso, il primo file visualizza comunque gli ultimi dati aggiornati. E' possibile, mi chiedo, poter associare i dati di un presunto file1 su un file2, e far sì che, se il file2 sia chiuso, il file1 visualizzi comunque i dati registrati dall'ultima apertura del file2? In questo modo potrei creare una macro che registri esclusivamente le ultime modifiche apportate dal file2 al file1, a prescindere dal fatto che il file2 sia aperto oppure chiuso.
2- Mettiamo invece il caso che riesca a seguire il tuo consiglio: il file1 (quello originale) viene aggiornato tramite l'inserimento manuale di alcuni dati che generano un foglio. Il foglio sarebbe salvato con nome (come proponi tu) e posizionato come copia. Non avrei però bisogno di una macro per il file1 che generi un salvataggio automatico, in quanto l'aggiornamento dei dati dovrebbe essere fatto in maniera manuale, e dunque il salvataggio avverrebbe esclusivamente in quella circostanza, e non ad intervalli temporali prestabiliti.
Mi sfugge però il Calcolate sul file2: potresti farmi un esempio pratico per farmi capire?
3- Ultima cosa: sempre se seguissi il tuo consiglio, come potrei gestire un ordinamento? Ovvero, il file2 copiato e gestito con collegamenti diretti al file1, al suo interno dovrebbe contenere una macro che ordini una classifica. Come potrei gestire la situazione? Le celle del file 1 si ordinerebbero e non perderebbero i giusti riferimenti attraverso funzioni più accurate, ma come potrei gestire l'ordinamento di una classifica nel file2 dopo l'aggiornamento dei dati nel file1?

Grazie mille!
wittelsbach
Utente Senior
 
Post: 249
Iscritto il: 17/09/05 08:55

Re: AUTOMATIZZARE COLLEGAMENTO TRA DUE FILE EXCEL

Postdi wittelsbach » 19/04/11 22:24

ricky53 ha scritto:Ciao,
io ho avuto lo stesso problema ed ho risolto in questo modo:
1. ogni 30 minuti produco (tramite una macro specifica) dal file principale (sul quale lavoriamo solo in tre persone e mai contemporaneamente) un file opportuno assegnandogli "sempre" il nome "Copia_per_il_Gruppo.XLS"
2. il file vien salvato su un server in una cartella condivisa.
3. la macro di salvataggio salva solo i dati necessari alle attività del gruppo (fogli opportuni) con grafici e pivot se necessari.

Spero che il mio esempio possa esserti di aiuto


se hai tempo e voglia, potresti fornire un esempio concreto della tua proposta?

ciao, grazie...
wittelsbach
Utente Senior
 
Post: 249
Iscritto il: 17/09/05 08:55

Re: AUTOMATIZZARE COLLEGAMENTO TRA DUE FILE EXCEL

Postdi ricky53 » 20/04/11 00:47

Ciao,
ti descrivo un esempio semplificato:
1. crea un nuovo file xls
2. nel "Foglio2" scrivi dei dati
3. copia il codice seguente in "ThisWorkbook"
Codice: Seleziona tutto
Private Sub Workbook_Open()
    Avvia
End Sub

4. inserisci un "Modulo" e copia il codice seguente
Codice: Seleziona tutto
Option Explicit
Public DeltaT As Date, Risposta As String

Sub Avvia()
    DeltaT = "00:00:10" ' <<---- Modifica questo valore in base al tempo che vuoi intercorra tra i vari salvataggi

    Application.OnTime Now + TimeValue(DeltaT), "Salva_File"
End Sub

Sub Salva_File()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
   
    On Error GoTo Errore
    Kill "D:\Temp\File_Condivisi\Copia_per_il_Gruppo.xls"
    Sheets("Foglio2").Copy
' ----->> Adatta,  nell'istruzione seguente, il nome del "Percorso"
    ActiveWorkbook.SaveAs Filename:= _
        "D:\Temp\File_Condivisi\Copia_per_il_Gruppo.xls", FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
    ActiveWindow.Close
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
   
    MsgBox "'Effettuato Salvataggio Automatico' del file. " & vbCrLf & vbCrLf & "Tempo trascorso dall'ultimo salvataggio:   " & DeltaT ' <<----- Se vuoi,  questo messaggio, può essere tolto
    GoTo Continua
   
Errore:
    Risposta = MsgBox("Attenzione: Salvataggio NON effettuato !!!" & vbCrLf & vbCrLf & "Chiudere il file:  " & vbCrLf & _
        "Copia_per_il_Gruppo.xls", vbCritical)

Continua:
    Avvia
End Sub

5. chiudi il file
6. riaprilo

e .... ogni 10 Secondi il file verrà salvato nel percorso "D:\Temp\File_Condivisi"

Ricordati di modificare il tempo di attesa tra i salvataggi ed il percorso su cui salvare il file.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: AUTOMATIZZARE COLLEGAMENTO TRA DUE FILE EXCEL

Postdi ricky53 » 20/04/11 01:11

Ciao,
va inserita, in sede di chiusura del file, l'interruzione alla chiamata per il salvataggio temporizzato.

Domani ti indico le istruzioni necessarie.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: AUTOMATIZZARE COLLEGAMENTO TRA DUE FILE EXCEL

Postdi Anthony47 » 20/04/11 01:12

Vedi l' esempio di Ricky, sopra.

Quanto ho descritto dovrebbe consentirti di lavorare in modo trasparente sul file1 e sul file2.
Se inserire i collegamenti da File2 a File1 e' un lavoro immane allora potresti valutare la possibilita' di usare, come descritto da Flash, dei file di testo per scambiare i dati:
-periodicamente File1 genera N file di testo in una posizione nota, contenenti i valori delle celle da scambiare
-su File2 avrai creato delle aree ottenute con Importa dati esterni, impostando l' aggiornamento ogni N minuti; tante aree quanti sono i file creati da File1

Per quanto riguarda il Calculate: se usi dei "Collegamenti" a un file chiuso excel non ti aggiorna automaticamente il valore; eseguire periodicamente un Calcolate forza il ricalcolo del foglio.
Se invece usi Importa dati esterni il problema non c' e'.

Per l' Ordinamento, se File1 e File2 sono eseguiti in macchine diverse, credo che spostando i dati (ordinandoli) su File1 non ha impatto sui collegamenti di File2. Se invece ordini File2 l' operazione ti scombussola la sequenza dei link, ma non e' detto che questo sia dannoso, dipende da come usi ulteriormente i dati.

Purtroppo nella circostanza personalmente posso dare solo buoni consigli ma, al contrario di quanto hanno fatto Ricky e Flash, non buoni esempi...

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: AUTOMATIZZARE COLLEGAMENTO TRA DUE FILE EXCEL

Postdi ricky53 » 20/04/11 08:52

Ciao,
Anthony: i consigli sono sempre una grande cosa ed aiutano tutti a crescere nella conoscenza di excel.

Wittelsbach: come promesso ecco le modifiche per consentire l'interruzione della macro a tempo quando il file principale viene chiuso più qualche piccola sistemazione. Si potrebbero aggiungere altri controlli ma ... prima prova.

Copia il codice seguente in "ThisWorkbook"
Codice: Seleziona tutto
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Termina = "SI"
    DeltaT = "00:00:00"
End Sub

Private Sub Workbook_Open()
    DeltaT = "00:00:10" ' <<---- Modifica questo valore in base al tempo che vuoi intercorra tra i vari salvataggi
   
    Avvia
End Sub


Copia il codice seguente in un "Modulo"
Codice: Seleziona tutto
Option Explicit
Public DeltaT As Date, Risposta As String, Termina As String, Percorso As String, Nome_file As String

Sub Avvia()
    If Termina = "SI" Then
        Exit Sub
    End If
    Application.OnTime Now + TimeValue(DeltaT), "Salva_File"
End Sub

Sub Salva_File()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
   
'    Sheets("Foglio2").Copy ' <<------ Copia un solo Foglio
    Sheets(Array("Foglio2", "Foglio3")).Copy ' <<------ Copia più di un Foglio
   
    On Error GoTo Errore
    Percorso = "D:\Temp\File_Condivisi\" ' <<-------- Modifica in base al tuo percorso
    Nome_file = "Copia_per_il_Gruppo.xls" ' <<------ Assegna il nome che ti necessita
   
    ActiveWorkbook.SaveAs Filename:=Percorso & Nome_file, FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
    ActiveWindow.Close
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
   
    MsgBox "Effettuato Salvataggio Automatico di una copia del file sul quale si sta operando " & vbCrLf & vbCrLf & "Tempo trascorso dall'ultimo salvataggio:   " & DeltaT
    GoTo Continua
   
Errore:
    ActiveWindow.Close
    Risposta = MsgBox("Attenzione: Salvataggio NON effettuato !!!" & vbCrLf & vbCrLf & vbCrLf & "Probabili cause:" & vbCrLf & "Percorso errato" & vbCrLf & _
         "oppure" & vbCrLf & "il file:  '" & Nome_file & "'  è aperto", vbCritical)

Continua:
    Avvia
End Sub


Dopo aver copiato le istruzioni, salva e chiudi il file.
Per eseguire automaticamente il codice occorre riaprire il file.

Ricordati di creare il percorso sul quale salvare il file.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: AUTOMATIZZARE COLLEGAMENTO TRA DUE FILE EXCEL

Postdi wittelsbach » 21/04/11 07:31

grazie davvero per l'aiuto...troppo gentili. Non appena ho un minuto libero provo e vi faccio sapere. Ciao
wittelsbach
Utente Senior
 
Post: 249
Iscritto il: 17/09/05 08:55

Re: AUTOMATIZZARE COLLEGAMENTO TRA DUE FILE EXCEL

Postdi ricky53 » 21/04/11 09:53

Caio,
la versione che ti ho inviato (estratta da un mio file) prevede (in modo implicito e senza nessuna istruzione) che tu chiuda manualmente excel.

Il mio era un esempio sul quale lavorare ...
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia


Torna a Applicazioni Office Windows


Topic correlati a "AUTOMATIZZARE COLLEGAMENTO TRA DUE FILE EXCEL":


Chi c’è in linea

Visitano il forum: Nessuno e 19 ospiti