Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[excel]: creare un riferimento ad un file con nome variabile

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

Re: [excel]: creare un riferimento ad un file con nome varia

Postdi Anthony47 » 17/08/16 15:09

Grrrr, quella fase l'avevo ignorata...
Sostituisci
myFile = Replace(mySplit(0), "'", "") & Range("$b$1").Value & ".xlsm"
con
Codice: Seleziona tutto
mySplit1= Split(Range("$D$2").Value, "]")
myFile = Replace(mySplit(0), "'", "") & Replace(mySplit1(0), "[", "")

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

Sponsor
 

Re: [excel]: creare un riferimento ad un file con nome varia

Postdi luca62 » 18/08/16 15:12

qualcosa ancora non va , mi da questo errore:
il file ..'E:\backlavoro\produzione\distinta insiemi\ZCZCX'!A360750.xlsx
non esiste.
(nota in $d$2 il valore è 60750 mentre in $a$1 il valore è [60750.xlsx]5050)


e il file di cui mi deve controllare l'esistenza è il
E:\backlavoro\produzione\distinta insiemi\60750.xlsx
mentre il valore che deve andare a sostituire è:
E:\backlavoro\produzione\distinta insiemi\[60750.xlsx]5050'A3
E:\backlavoro\produzione\distinta insiemi\[60750.xlsx]5050'C3
E:\backlavoro\produzione\distinta insiemi\[60750.xlsx]5050'B3
E:\backlavoro\produzione\distinta insiemi\[60750.xlsx]5050'D3

RIALLEGO LA MACRO (NELLA PARTE Del controllo del file ho sostituito come da tua
ultimo consiglio, mentre non ho cambiato la parte "esecutiva"

[code][/code]
Private Sub Worksheet_Activate()
ActiveSheet.Unprotect
Dim myBase(1 To 4)
myBase(1) = "'E:\backlavoro\produzione\distinta insiemi\ZCZCX'!A3"
myBase(2) = "'E:\backlavoro\produzione\distinta insiemi\ZCZCX'!C3"
myBase(3) = "'E:\backlavoro\produzione\distinta insiemi\ZCZCX'!B3"
myBase(4) = "'E:\backlavoro\produzione\distinta insiemi\ZCZCX'!D3"


'Check esistenza file:
mySplit = Split(myBase(1), "[")
mySplit1 = Split(Range("$d$2").Value, "]")
myFile = Replace(mySplit(0), "'", "") & Replace(mySplit1(0), "[", "")
If Len(Dir(myFile)) = 0 Then
MsgBox ("il file " & myFile & " non esiste" & vbCrLf & _
"Le formule non sono state alterate")
Exit Sub
End If
'
Application.EnableEvents = False
LastA = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To 4
Cells(3, 1 + i).Resize(LastA - 3, 1).FormulaLocal = "=" & Replace(myBase(i), "ZCZCX", Range("$d$2").Value)
Next i
Application.EnableEvents = True
ActiveSheet.Name = Left([D2] & " " & [C2], 20)
ActiveSheet.Protect
End Sub
luca62 office2007 window7
luca62
Utente Senior
 
Post: 158
Iscritto il: 23/12/12 14:54

Re: [excel]: creare un riferimento ad un file con nome varia

Postdi Anthony47 » 18/08/16 23:09

Riepiloghiamo
-in D2 doveva esserci Nomefile + nome foglio, nel formato [NomeFile.xls]NomeFoglio; tu invece l'hai messo in A1
Devi di conseguenza modificare nel mio codice le istruzioni che facevano riferimento a D2 affinche' puntino ad A1; si tratta
1- della linea
mySplit1= Split(Range("$D$2").Value, "]")
che deve diventare
Codice: Seleziona tutto
mySplit1= Split(Range("A1").Value, "]")


2 - e della linea
Cells(3, 1 + i).Resize(LastA - 3, 1).FormulaLocal = "=" & Replace(myBase(i), "ZCZCX", Range("$d$2").Value)


Mi accorgo pero' di un errore in quanto ti suggerii, che impatta anche questa riga:
A- il contenuto di myBase deve essere nel formato
Codice: Seleziona tutto
myBase(1) = "'H:\produzione\scheda preventivo\[ZCZCX'!A3"
myBase(2) = "'H:\produzione\scheda preventivo\[ZCZCX'!C3"
'etc
'etc
(nota la parentesi quadra inserita)

B- nella seconda riga da correggere bisogna correggere ulteriormente la stringa da Rimpiazzare: non ZCZCX ma [ZCZCX. La riga pertanto deve diventare
Codice: Seleziona tutto
Cells(3, 1 + i).Resize(LastA - 3, 1).FormulaLocal = "=" & Replace(myBase(i), "[ZCZCX", Range("A1").Value)


Speriamo sia la penultima correzione...
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: [excel]: creare un riferimento ad un file con nome varia

Postdi luca62 » 20/08/16 08:19

grazie Anthony da una prima verifica..perfetto!
luca62 office2007 window7
luca62
Utente Senior
 
Post: 158
Iscritto il: 23/12/12 14:54

Re: [excel]: creare un riferimento ad un file con nome varia

Postdi luca62 » 21/08/16 10:47

Anthony tutto ok ,
ma ti chiedo un aiuto, in quanto non riesco a modificare la macro in questo senso:
con la macro che mi hai confezionato, vado a scrivere su 4 colonne del mio file
Dim myBase(1 To 4)
myBase(1) = "'E:\backlavoro\produzione\distinta insiemi\ZCZCX'!A3"
myBase(2) = "'E:\backlavoro\produzione\distinta insiemi\ZCZCX'!C3"
myBase(3) = "'E:\backlavoro\produzione\distinta insiemi\ZCZCX'!B3"
myBase(4) = "'E:\backlavoro\produzione\distinta insiemi\ZCZCX'!D3"

che vado a prelevare da 4 colonne di un altro file
in particolare adesso, vado a sostituire i dati dalla riga 3 in poi, posti nelle colonne B,C,D,E
attingendo dai dati posti in un altro file (il file variabile) iniziando da A3-C3-B3-D3

adesso necessito di prendere più dati ,main questa sequenza:
sostituire i dati dalla riga 3 in poi, posti nelle colonne B,C,D.E,G,H,I,J,K
(ossia da B a K ,ma lasciando invariata la colonna oltre alla A, come prima, la colonna F).
attingendo dai dati posti in un altro file (il file variabile) iniziando da A3-C3-B3-D3-F3-G3-H3-I3-J3

come faccio a modificare la macro per far lasciare inalterata la colonnaF ?
ho provato,..ma non riesco a levarci le gambe!

riporto la macro modificata con i tuoi suggerimenti:

Codice: Seleziona tutto
Private Sub Worksheet_Activate()
ActiveSheet.Unprotect
Dim myBase(1 To 4)
myBase(1) = "'E:\backlavoro\produzione\distinta insiemi\[ZCZCX'!A3"
myBase(2) = "'E:\backlavoro\produzione\distinta insiemi\[ZCZCX'!C3"
myBase(3) = "'E:\backlavoro\produzione\distinta insiemi\[ZCZCX'!B3"
myBase(4) = "'E:\backlavoro\produzione\distinta insiemi\[ZCZCX'!D3"


'Check esistenza file:
mySplit = Split(myBase(1), "[")
    mySplit1 = Split(Range("$A$1").Value, "]")
    myFile = Replace(mySplit(0), "'", "") & Replace(mySplit1(0), "[", "")
If Len(Dir(myFile)) = 0 Then
    MsgBox ("il file " & myFile & " non esiste" & vbCrLf & _
        "Le formule non sono state alterate")
    Exit Sub
End If
'
Application.EnableEvents = False
LastA = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To 4
    Cells(3, 1 + i).Resize(LastA - 3, 1).FormulaLocal = "=" & Replace(myBase(i), "[ZCZCX", Range("$A$1").Value)
Next i
Application.EnableEvents = True
ActiveSheet.Name = Left([D2] & " " & [C2], 20)
ActiveSheet.Protect
End Sub
luca62 office2007 window7
luca62
Utente Senior
 
Post: 158
Iscritto il: 23/12/12 14:54

Re: [excel]: creare un riferimento ad un file con nome varia

Postdi Anthony47 » 22/08/16 16:46

Da quello che ho capito, dovrai fare un ciclo 1 to 9 (For i = 1 To 9) e potrai saltare la F modificando la riga che imposta la formula in
Codice: Seleziona tutto
    Cells(3, 1 + i - CLng(i > 4)).Resize(LastA - 3, 1).FormulaLocal = "=" & Replace(myBase(i), "[ZCZCX", Range("$A$1").Value)


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: [excel]: creare un riferimento ad un file con nome varia

Postdi luca62 » 29/08/16 18:47

tutto ok Anthony, tranne che mi lavora al massimo fino a scrivere circa 1000 righe e non vedo dove sia la limitazione
a tale scrittura (dopo l'ultima mia modifica vado a copiare in pratica 19 colonne For i = 1 To 19) inoltre dopo un certo numero di righe
il carattere Arial passa da 8 a 9!
luca62 office2007 window7
luca62
Utente Senior
 
Post: 158
Iscritto il: 23/12/12 14:54

Re: [excel]: creare un riferimento ad un file con nome varia

Postdi Anthony47 » 30/08/16 02:00

Non so che cosa fai //come lo fai, quindi non so immaginare perche' scrive solo fino a 1000 righe.

La macro non controlla la formattazione del foglio, che evidentemente e' formattato un po' Arial 9 e un po' Arial 8; formatta manualmente le aree come ti servono (anche quelle non ancora utilizzate).

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

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "[excel]: creare un riferimento ad un file con nome variabile":


Chi c’è in linea

Visitano il forum: Nessuno e 21 ospiti