Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

[Excel 2007]- Macro per aprire file correlati Opzioni
aetio
Inviato: Thursday, June 21, 2012 1:37:09 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
durante l’esame di alcune tabelle, tra esse correlate, devo spesso aprire diversi file con la conseguente perdita di tempo, deconcentrazione etc. Dato che il gruppo di file è strutturato sempre allo stesso modo vorrei fare eseguire tutto il lavoro di apertura dei file a una macro presente nel file che fà da “capocommessa”, file dal quale ricavo i dati da visionare nelle altre tabelle ad esso correlate, residenti nei file che ora apro manualmente.
Il percorso di base del gruppo di file è questo:
C:/Documenti/EZIO/NONNA/MADRE/FIGLIA1/CODICE-FIGLIA1/CODICE-NIPOTEn.xlsm
dove n=1, oppure 2, o 3, 4, 5, 6 etc. mentre il CODICE è così strutturato: NUMERO’NUMERO, dove il numero prima dell’apice rimane uguale, mentre quello dopo l’apice varia.
Con un piccolo ESEMPIO pratico:
Supponiamo di trovarci in C:/Documenti/EZIO/NONNA/MADRE/FIGLIA1/74’60-FIGLIA1/74’60-NIPOTE1.xlsm (che è il file “capocommessa”): la macro dovrà aprire i file
74’59-FIGLIA1/74’59-NIPOTE1.xlsm
74’58-FIGLIA1/74’58-NIPOTE1.xlsm
74’57-FIGLIA1/74’57-NIPOTE1.xlsm
etc. fino a
74’45-FIGLIA1/74’45-NIPOTE1.xlsm
tutti residenti nella directory C:/Documenti/EZIO/NONNA/MADRE/FIGLIA1/

Allo stesso modo, supponiamo di trovarci in C:/Documenti/EZIO/NONNA/MADRE/FIGLIA1/74’55-FIGLIA1/74’55-NIPOTE1.xlsm (che è il file “capocommessa”): la macro dovrà aprire i file
74’54-FIGLIA1/74’54-NIPOTE1.xlsm
74’53-FIGLIA1/74’53-NIPOTE1.xlsm
74’52-FIGLIA1/74’52-NIPOTE1.xlsm
etc. fino a
74’40-FIGLIA1/74’40-NIPOTE1.xlsm
tutti residenti nella directory C:/Documenti/EZIO/NONNA/MADRE/FIGLIA1/

In parole povere, la macro dovrebbe leggere in quale file risiede (il file “capocommessa”), e in base a ciò dare istruzioni di aprire i file in cui sono contenute le tabelle da visionare, file che sono legati al file secondo lo schema sopra esposto.
Grazie assai e buon pomeriggio,
eZio
Sponsor
Inviato: Thursday, June 21, 2012 1:37:09 PM

 
a10n11
Inviato: Thursday, June 21, 2012 2:45:01 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
con quale criterio viene determinato il valore di "n" ?

Commenta:

74’59-FIGLIA1/74’59-NIPOTE1.xlsm
74’58-FIGLIA1/74’58-NIPOTE1.xlsm
74’57-FIGLIA1/74’57-NIPOTE1.xlsm
etc. fino a
74’45-FIGLIA1/74’45-NIPOTE1.xlsm


con quale criterio selezionare i codici?


saluti
Giap


aetio
Inviato: Thursday, June 21, 2012 3:33:53 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
Commenta:
con quale criterio viene determinato il valore di "n" ?

Commenta:
con quale criterio selezionare i codici?


...ehm!!... forse ho ingarbugliato inutilmente la matassa nominando i file esempio in quel modo. Chiedo scusa...
Provo a cambiare riferimenti, tralasciando fuorvianti simboli matematici, fuori luogo... :))
Il percorso di base del gruppo di file è questo:
C:/Documenti/EZIO/ITALIA/LAZIO/ARCHIVIO_LAZIO/74'60-LAZIO/74'60-CADMIO_LAZIO.xlsm
Supponiamo di trovarci appunto in C:/Documenti/EZIO/ITALIA/LAZIO/ARCHIVIO_LAZIO/74'60-LAZIO/74'60-CADMIO_LAZIO.xlsm (che è il file “capocommessa”): la macro dovrà aprire i file
74'59-LAZIO/74'59-CADMIO_LAZIO.xlsm
74'58-LAZIO/74'58-CADMIO_LAZIO.xlsm
74'57-LAZIO/74'57-CADMIO_LAZIO.xlsm
etc. fino a
74'45-LAZIO/74'45-CADMIO_LAZIO.xlsm
( deve aprire 15 file)
tutti residenti nella directory C:/Documenti/EZIO/ITALIA/LAZIO/ARCHIVIO_LAZIO/
Allo stesso modo, supponiamo di trovarci in C:/Documenti/EZIO/ITALIA/LOMBARDIA/ARCHIVIO_LOMBARDIA/74'50-LOMBARDIA/74'50-CADMIO_LOMBARDIA.xlsm (che è il file “capocommessa”): la macro dovrà aprire i file
74'49-LOMBARDIA/74'49-CADMIO_LOMBARDIA.xlsm
74'48-LOMBARDIA/74'48-CADMIO_LOMBARDIA.xlsm
74'47-LOMBARDIA/74'47-CADMIO_LOMBARDIA.xlsm
etc. fino a
74'35-LOMBARDIA/74'35-CADMIO_LOMBARDIA.xlsm
(deve aprire 15 file)
tutti residenti nella directory C:/Documenti/EZIO/ITALIA/LOMBARDIA/ARCHIVIO_LOMBARDIA/
Altro esempio, supponiamo di trovarci in C:/Documenti/EZIO/FRANCIA/ALVERNIA/ARCHIVIO_ALVERNIA/74'32-ALVERNIA/74'32-INDIO_ALVERNIA.xlsm (che è il file “capocommessa”): la macro dovrà aprire i file
74'31-ALVERNIA/74'31-INDIO_ALVERNIA.xlsm
74'30-ALVERNIA/74'30-INDIO_ALVERNIA.xlsm
74'29-ALVERNIA/74'29-INDIO_ALVERNIA.xlsm
etc. fino a
74'17-ALVERNIA/74'17-INDIO_ALVERNIA.xlsm
(deve aprire 15 file)
tutti residenti nella directory C:/Documenti/EZIO/FRANCIA/ALVERNIA/ARCHIVIO_ALVERNIA/

La macro dovrebbe leggere in quale file risiede (il file capocommessa), e in base a ciò dare istruzioni di aprire i file in cui sono contenute le tabelle da visionare, file legati al file secondo lo schema sopra esposto.
Spero di avere dipanato un poco meglio la matassa...
Grazie infinite, buon pomeriggio
eZio


a10n11
Inviato: Thursday, June 21, 2012 7:09:59 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
è diventata contorta, perchè ricordando la composizione dei tuoi codici non sono sempre in coppie di due.
74'60 potrebbe essere anche 74'128

non badare alla costruzione che può sembrare caotica, ma vedi se evade la richiesta.

Sub test()
x = ActiveWorkbook.Path
mname = ActiveWorkbook.Name
a = InStr(1, mname, "'")
b = InStr(1, mname, "-")
y = Mid(mname, a + 1, b - a - 1)
pp = InStr(1, x, "'")
Ln = Mid(x, InStr(pp, x, "-"), Len(x) - InStr(pp, x, "-") + 1)
endname = Mid(mname, b, Len(mname) - (b - 1))
On Error GoTo errore
For n = 1 To 15
Z = y - n
nwpath = Mid(x, 1, pp) & Z & Ln & "\"
nwname = Mid(mname, 1, a) & Z & endname
Workbooks.Open nwpath & nwname
Next n
errore:
If Err.Number = 1004 Then
MsgBox (nwname & Chr(10) & "file non trovato")
End If
End Sub

saluti
Giap

aetio
Inviato: Thursday, June 21, 2012 8:23:33 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,

Commenta:
non badare alla costruzione che può sembrare caotica, ma vedi se evade la richiesta.

... ...

... è perfetta!!
Non ho parole... se non... Eccezionale!!

Se, e quando, hai tempo e voglia... dato che sono innamorato alla follia delle tue creature, mi potresti spiegare a grandi linee le istruzioni e i codici? Mi faresti un immenso regalo.............
Grazie infinite, buona serata.
eZio


p.s. ... alla faccia della "contorta"!!
a10n11
Inviato: Friday, June 22, 2012 9:45:45 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
la logica della macro, è quella di estrarre la parte variabile del nome file e del Path che è rappresentato dal
codice. Quindi ho pensato di fare uno spezzatino di essi per poi ricomporli ed aprire il file cercato.

in sintesi questo è quello che fa la macro:
partendo da questo:
C:/Documenti/EZIO/ITALIA/LOMBARDIA/ARCHIVIO_LOMBARDIA/74'50-LOMBARDIA/74'50-CADMIO_LOMBARDIA.xlsm

estraggo la path
X= ActiveWorkbook.path = C:/Documenti/EZIO/ITALIA/LOMBARDIA/ARCHIVIO_LOMBARDIA/74'50-LOMBARDIA
e il nome del file
Mname = 74'50-CADMIO_LOMBARDIA.xlsm
vado a cercare il codice 74'50 all'interno del nome file e del path

A= 3 perchè trova il carattere ( ' ) alla terza posizione di Mname
B= 6 perchè trova il carattere ( - ) alla sets posizione di Mname
Y= 50 (il valore tra il carattere ( ' ) e il carattere (-) di Mname
PP= 57 la posizione del carettere ( ' ) nela Path del file
LN= -LOMBARDIA (estrae tutti caratteri presenti nel Path dopo il codice)
Endname= -CADMIO_LOMBARDIA.xlsm (estrae la parte finale del nome file

Con il ciclo For si inizia a ricostruire la path e il nome del file modificando la parte variabile rappresentata
dal codice. ad ogni escussione, Y diminuisce di una unità.

saluti
Giap

aetio
Inviato: Friday, June 22, 2012 1:14:13 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
spiegazione chiarissima e sintetica. Complimenti per tutte le tue creature, ma anche per le tue spiegazioni...
Grazie infinite, buon pomeriggio
eZio
Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.