Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel] Aggiornare file in rete con VBA

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

[Excel] Aggiornare file in rete con VBA

Postdi fabio83 » 24/06/06 18:04

Ciao a tutti,
sapreste dirmi come faccio a fare una semplice macro che sappia aggiornare il file quando questo è condiviso in rete e successivamente salvarlo?
Questa cartella excel lavora con la condivisione: Strumenti-->Condividi cartella di lavoro --> opzione "Consenti modifiche contemporaneamente..." attivata.
Mi serve un comando che importi i dati (comando che si attiva solo quando la condivisione è attivata) e salvi l'intero file.

Grazie tante.

Ciao ciao,
Fabio

*** Attenzione ai titoli
fabio83
Utente Junior
 
Post: 15
Iscritto il: 17/06/06 20:52

Sponsor
 

Postdi Alexsandra » 25/06/06 12:49

Strana questa richiesta,quando apri un file in rete lo puoi aprire anche da altra postazione ma in sola lettura, questo è quello che ti consente Excel.
Spiega meglio qual'è il problema o casa vorresti fare.

PS: forse..... Macro -> Salva con nome da postazione 1 e stessa cosa da postazione 2 messa in workbook close ?
Avatar utente
Alexsandra
Utente Senior
 
Post: 2358
Iscritto il: 09/01/06 20:31

[Excel] ecco perchè mi serve aggiornare il file con 1 macro

Postdi fabio83 » 25/06/06 13:55

Grazie Alexsandra. Alla presentazione del nuovo programma alla mia Associazione non scorderò di menzionarti insieme a questo formidabile forum di Pc-Facile.
Colgo l'occasione per dire che non ho alcunissima intenzione di porre un qualsiasi vincolo economico a ciò che uscirà fuori e che sono contentissimo di mettere a disposizione di chiunque questo sistema di gestione gare d'Orienteering e ancora più contento se sarà base di uno sviluppo futuro.

La condivisione della cartella Excel in rete è alla base del mio programma. Infatti già nelle gare di quest'anno non ho avuto nessun problema a fare quanto segue.
Il problema era ridurre l'affanno all'arrivo per inserire tutti i dati (ora di partenza, nome atleta ecc.). I concorrenti, per peculiarità dello sport, portano con se un testimone dove vi è riportato il nome, il tempo di partenza ecc. Ho pensato che, se molte informazioni (quelle note) fossero state inserite nel sistema informatico già alle iscrizioni, l'affanno all'arrivo si sarebbe molto ridotto lasciando all'arrivo il solo compito di richiamare l'atleta mediante un codice univoco e associargli un tempo d'arrivo.

Nel tecnico informatico. Un pc sta alle iscrizioni, un pc sta all'arrivo. I due computer sono in rete Lan (quest'anno era fisica con cavo rj45, ma l'anno prossimo conto di usare una wireless, per evitare di srotolare decine di metri di cavo in mezzo alla Natura). Il file Gara.xls sta nel pc all'arrivo (che chiamerò Server per convenzione) in una cartella condivisa. Il Server apre il file e lo condivide (dal menù Strumenti-->Condividi cartella di lavoro--> con l'opzione "Consenti modifiche contemporaneamente..."). (Inoltre nella scheda Avanzate è possibile scegliere quali politiche adottare per il salvataggio e la rilevazione modifiche). Il pc alle iscrizioni (che chiamerò Client) apre il file Gara.xls (che sta nella cartella condivisa dal Server in rete) e lavora sul foglio "Iscrizioni" mentre il Server lavora sul foglio "Arrivo". Nel programma usato quest'anno vi era un ammasso di formule quali CONFRONTA e INDICE per ripescare i dati nel seguente modo: Iscrizioni cercava su Database, Arrivo cercava su Iscrizioni. In questo modo, aggiornando il file da una delle due postazioni, si importavano le modifiche dell'altro. Presupposto a questa operazione era che l'altro salvasse il file. Inoltre Server non operava sul foglio dedicato al Client e il Client non modificava campi sul foglio dedicato a Server.

Quanto sopra esposto ha sempre funzionato a meraviglia. La versione di Excel è la 2003 ServicePack 2 e successivi aggiornamenti installati.

Torniamo all'esigenza che ho ora. Finora alle iscrizioni c'erano due casse (per scorciare la fila, ogni cassa gestiva 2 percorsi per evitare accavallamenti sulla griglia di partenza) che generavano cartaceo da dare all'operatore al pc che inseriva i dati nel file Gara.xls. L'anno che viene vorrei che ogni cassa avesse il suo pc e che l'operatore sia già chi è a contatto con gli atleti. Dato che il database è suscettibile di aggiunte (non tutti gli atleti di una gara li conosco prima della gara, quindi sono nuovi rispetto al mio database) e dato che il database è una fonte di dati sia per una cassa che per l'altra, la macro con la quale si inseriscono i nuovi atleti deve: assegnare un nuovo codice (cosa che ho risolto perchè una cassa assegna i dispari e l'altra i pari, v. funzione DISPARI(val.) ) copiare i campi "nome atleta" e "società" ed incollarli in fondo al database (nel foglio DATABASE). Inoltre è necessario l'ordinamento in base al nome atleta (ottima intuizione di Alexsandra) per fare in modo che nella convalida ad elenco (usata per inserire l'atleta in gara ed oggetto dell'altro topic da me aperto) appaia il nuovo atleta già bello e ordinato. In conclusione: preventivamente alla fase di inserimento del nuovo atleta nel database si importano i dati dalla rete, si inserisce il nuovo atleta, si salva il file (così all'altra cassa apparirà un altro campo occupato quando questa aggiornerà a sua volta il file). Così eviterei che le due casse scrivano il medesimo campo o comunque modifichino il database sugli stessi campi.

Il tutto si riassume nel poter inserire in una macro il comando Aggiorna file, il quale però, giustamente, si attiva solo quando la cartella è condivisa e cioè quando non posso creare macro.

Scusami per la lunga risposta ma almeno spero di averti chiarito come arrivo ad avere questa esigenza.

Grazie.

Fabio
fabio83
Utente Junior
 
Post: 15
Iscritto il: 17/06/06 20:52

Postdi Alexsandra » 25/06/06 14:33

Interessante.
Mi sono fatta una cultura con il file sui tornei di calcio e adesso con le gare podistiche.
Mi è venuta un'idea. Quando partono gli atleti credo che prima che arrivino i pc alla partenza abbiano finito di fare la loro funzione oppure c'è un flusso continuo?.
Io semplificherei. puoi lavorare anche importando i dati da cartelle chiuse.
1 cartella per i pari e un'altra per i dispari, e poi all'arrivo digitando il solo codice atleta ti compare quanto inserito alla partenza.

Ti mando un esempio vedi se così ti è più semplice oppure se può fare per il tuo caso e caso mai lo sviluppiamo.
Avatar utente
Alexsandra
Utente Senior
 
Post: 2358
Iscritto il: 09/01/06 20:31

Postdi fabio83 » 26/06/06 12:01

Ciao Alexsandra,

non sò che dirti su quei file che mi hai mandato. Non riesco a capire come lavorare su xxxxxxx... É molto interessante "macromia" di xxxxxxx (l'userò come libro di testo) e poi è spiegata in ogni passaggio.

Credo, però, che risolverò in un altro modo.

Premetto che in effetti le fasi di iscrizioni, partenza, arrivo sono contemporanee (circa. Ovviamente le iscrizioni partono da una mezz'ora prima rispetto alle partenze e i primi arrivi sono attesi dopo poco meno di mezz'ora dalle prime partenze, in pratica i ragazzi delle scuole medie che hanno il percorso più corto e sono già bravi) e in flusso continuo. Comunque ho bisogno di aggiornare i dati almeno ogni 30 minuti (non posso farlo con chiavette usb perché sarebbe una vera scocciatura girare da un posto all'altro, interrompere il lavoro dei pc e sostituire file. Inoltre quando iniziai a fare il programma vidi che Excel impazziva con troppi dati collegati da un file all'altro, allora optai per la condivisione).

Ho pensato che nel foglio DATABASE posso lasciare le prime 1000 righe dedicate al database vecchio (cioè tutti gli atleti noti prima del giorno della gara). Sotto metto 200 righe per mettere gli atleti di una cassa (in realtà non ho mai avuto più di una 20ina di atleti nuovi ad ogni gara, anche perchè le grandi masse sono sempre gli stessi oppure sono le scuole che ti mandano le preiscrizioni 3 giorni prima) e sotto ancora altre 200 righe disponibili per gli atleti dell'altra cassa. In questo modo imposto le macro per andare a iscrivere i nuovi inseriti nell'intervallo di quella o quell'altra cassa. Così due pc scriveranno sullo stesso foglio ma non negli stessi campi, in fase di salvataggio non ci sarà conflitto tra i dati; per il ripescamento dei dati in fase di arrivo basterà reindirizzare il tutto all'intera colonna del database.

Questo però comporta la soluzione di due problemi.

1) Nel foglio di inserimento atleti in gara (quindi CASSA1 e CASSA2) dovrò mettere non più una sola convalida ad elenco con riferimento al database vecchio, ma anche un'altra convalida ad elenco con riferimento al database dei nuovi di quella cassa (tutte le info che si generano dopo le collego ad un campo dove vi è la formula CONCATENA tra una convalida e l'altra, avendo preventivamente escluso la possibilità di avere dati contemporaneamente su una o sull'altra grazie ad una Private Sub, quindi necessariamente il CONCATENA mi darà solo un nome). Avrei voluto come origine dati per la convalida ad elenco una somma di intervalli ma Excel mi dice espressamente che ciò non è possibile. Ho provato anche a fargli credere che è un unico intervallo definendo due intervalli con un unico nome, ma Excel non ci è cascato!!!).

2) Resta aperta la questione di poter ridefinire un intervallo con un nome (menù Inserisci-->Nome-->Definisci) mediante l'uso della macro che aggiunge il nuovo atleta nel database. Questo è l'altro topic aperto da me ma mi limito a riportare la ragione di ciò. In pratica se una convalida ad elenco ha come riferimento un intervallo dove compaiono righe vuote alla fine, l'elenco mostrerà quelle righe vuote e, appena cliccato sulla freccetta a destra, si posizionerà proprio sulla prima riga vuota (openoffice, gratuito, non lo fà) nonostante l'opzione Salta celle vuote. Allora è molto utile ridefinire l'intervallo (quando il database di atleti nuovi si arricchisce di un nuovo elemento) al quale si riferisce la convalida per avere un elenco più snello e di veloce consultazione.

In conclusione, così facendo non ho più l'esigenza di inserire il comando "Aggiorna file" in una macro poiché non vi è più conflitto tra l'inserimento di un pc e di un altro nel medesimo campo di un file condiviso.

Ciao,
Fabio

*** Fabio ho editato per invio file errato :lol: :lol: ci credo che non ti serva quella macro lì .....scusami mea culpa
fabio83
Utente Junior
 
Post: 15
Iscritto il: 17/06/06 20:52

Postdi Alexsandra » 26/06/06 14:04

Ho capito. ho anche capito che ho pasticciato quando ho compresso i file :D

Stasera quando torno a casa guardo cosa ti ho mandato. Volevo proporti di usare un file (quello che tu chiami server e che metti all'arrivo) che si aggangia ad altri 2 file (cassa 1 e cassa 2) quello che ti ho mandato (è da verificare) era solo un esempio di come lavora.

Puoi pescare i dati dal server su questi 2 file anche se sono chiusi, e potresti con un timer lanciare una macro che aggiorni i 2 file (cassa 1 e cassa 2) io ho pensato a un salva con nome, così avresti sempre i tuoi dati aggiornati.
era solo una proposta che volevo farti vedere se poteva servire a risolverti dei problemi.
Stasera guardo i file che ti ho inviato eventualmente ci aggiorniamo in serata,per la macro che ti serve il codice che ti ho postato sopra ti è utile o hai bisogno di altro ?
Ciao
Avatar utente
Alexsandra
Utente Senior
 
Post: 2358
Iscritto il: 09/01/06 20:31

Postdi fabio83 » 26/06/06 16:00

Ciao Alexsandra. Grazie ancora.
Non lo sò, sono indeciso. Non vorrei rinunciare a questa opportunità di lavorare in rete sulla stessa cartella Excel. Una volta scongiurata la probabilità di scrivere lo stesso campo da più parti, mi sembra una buona cosa. Anche perchè l'applicazione sul campo di prova non mi ha dato problemi.

Il codice VBA più importante per me ora è quello relativo alla ridefinizione di un intervallo (l'altro topic) che però non ho ancora avuto tempo di vedere a dovere (sto studiando per un esame di diritto pubblico :)

Comunque sono interessato a ricevere il file che avevi pensato per me, magari cambio idea!

Ciao,

Fabio
fabio83
Utente Junior
 
Post: 15
Iscritto il: 17/06/06 20:52

Postdi Alexsandra » 26/06/06 16:38

Vista la tua risposta meglio continuare come lo hai iniziato ed essere operativi,poi eventualmente si può portare avanti un altro metodo,ma intanto abbiamo un programma funzionante.
Mi leggo l'altro topic e poi ne parliamo se è solo per ridefinire un intervallo ad ogni inserimento non è un grosso problema.
Comunque prima leggo e poi ci sentiamo

Ciao
Avatar utente
Alexsandra
Utente Senior
 
Post: 2358
Iscritto il: 09/01/06 20:31

già risposto

Postdi fabio83 » 26/06/06 19:20

Ciao Alexsandra,
l'altro topic è semplicemente questo
[Excel] Ridefinire nome di un intervallo con VBA
e mi hai già risposto. Non sò se con le ultime peculiarità che ti ho elencato ti siano venute in mente ulteriori soluzioni.
Perdonami se ancora non ho provato le tue indicazioni ma sono occupato a studiare.

Grazie e a presto,

Fabio
fabio83
Utente Junior
 
Post: 15
Iscritto il: 17/06/06 20:52

Postdi Alexsandra » 26/06/06 19:50

ho controllato il codice e fà quello che hai bisogno. Lasciamo per un pò il problema,intanto studia e finisci i tuoi esami,poi riprendiamo il discorso.
Ok? ...... se hai bisogno .....sono quì

Ciao e tanti Auguri
Avatar utente
Alexsandra
Utente Senior
 
Post: 2358
Iscritto il: 09/01/06 20:31


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Aggiornare file in rete con VBA":


Chi c’è in linea

Visitano il forum: Nessuno e 9 ospiti