Condividi:        

Excel copio cella in file aperti

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 copio cella in file aperti

Postdi salatony » 09/02/18 21:13

Ciao,
immancabilmente chiedo il Vostro aiuto.
Mi spiego,
Devo inserire un numero, in una cella ben precisa, in centinaia di FILE.
Potrei tenere aperti più file contemporaneamente, e forse con una macro, copiare la cella, esempio F5, da un file principale in tutti i file momentaneamente aperti (basterà solo salvarli).
Spero di essermi spiegato, e ti chiedo, si può fare?.
Grazie
Ciao
salatony
Utente Junior
 
Post: 68
Iscritto il: 08/11/13 21:16

Sponsor
 

Re: Excel copio cella in file aperti

Postdi Anthony47 » 10/02/18 13:42

Immagino che parli di inserire sempre nella stessa cella di un tot di file sempre lo stesso valore, magari prendendolo dalla cella F5 di un file/foglio master.

Per poter procedere tuttavia c'e' bisogno di informazioni certe:
-dove prendo il dato da incollare nei vari file (puo' essere un valore noto, o un indirizzo di cella di cui si prende contenuto, oppure contenuto e formato; chiarisci tu)
-dove trovo i file da aggiornare
-come identifico che il file e' da aggiornare
-nome foglio e indirizzo cella da aggiornare
Con queste informazioni si potra' elaborare una macro che faccia tutte le cose piu' o meno automaticamente (spiega tu il livello di automatismo + controllo che vorresti)

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

Re: Excel copio cella in file aperti

Postdi salatony » 10/02/18 20:36

Ciao
Esatto, il dato da incollare e'un valore noto, devo sostituire lo 0,4 in F5 (che si trova nella stessa cella di tutti i file), con il numero 1.
I file da agg.re sono in una cartella: Fornitori/nomi singoli fornitori/FILE (da agg.re).
I file sono tutti da agg.re.
Il foglio di rif.to (in tutti i file), in cui si trova la cella F5, da agg.re, è Foglio1.
Quello che vorrei é: aprire es. I primi 50 file, poi quando sono tutti aperti, faccio partire la macro, che mi copia il valore 1 nel Foglio1 in F5, in tutti i file aperti, dopodiché li chiude e li salva
Grazie
Ciao
salatony
Utente Junior
 
Post: 68
Iscritto il: 08/11/13 21:16

Re: Excel copio cella in file aperti

Postdi Anthony47 » 11/02/18 00:54

Ti proporro' (se non lo fara' qualcun altro prima di me) una macro che apre i file uno dopo l'altro, verifica che in Foglio1!F5 ci sia scritto un valore compreso tra 0.3 e 0.5, sostituisce con 1, salva e chiude il file; ripete per il prossimo file nella directory.
Contare fino a 50 non serve a niente se non a complicarsi la vita.

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

Re: Excel copio cella in file aperti

Postdi salatony » 12/02/18 13:10

Perfetto,
Procediamo, ti ringrazio,
Ciao
salatony
Utente Junior
 
Post: 68
Iscritto il: 08/11/13 21:16

Re: Excel copio cella in file aperti

Postdi Anthony47 » 14/02/18 01:18

Allora, la mia proposta e' di inserire in un file nuovo, che salverai in una directory diversa da quella che contiene i file da modificare, questa macro:
Codice: Seleziona tutto
Sub MassEdit()
Dim myDir As String, myCFile As String, myErr As String, myDest As String
Dim fCnt As Long, myNew
'
myDest = "Foglio1"                  '<<< Il Foglio in cui si creera' il riepilogo
myDir = "D:\PIPPO\Archivio\"        '<<< La dir dei file da consolidare (con \ finale)
myNew = 1                           '<<< Il nuovo valore da inserire; se e' una stringa, usare le virgolette, es "Nuova Stringa"
'
Debug.Print
Application.EnableEvents = False
myCFile = Dir(myDir & "*.xls*")
Do
If myCFile = "" Then Exit Do
On Error Resume Next
    Workbooks.Open (myDir & myCFile)
    Sheets(myDest).Range("F5").Value = myNew
    If ActiveWorkbook.Name <> myCFile Or _
      Sheets(myDest).Range("F5").Value <> myNew Then
        On Error GoTo 0
        myErr = myErr & myCFile & vbCrLf
        Debug.Print myCFile
        If ActiveWorkbook.Name <> ThisWorkbook.Name Then
            ActiveWorkbook.Close False
        End If
    Else
        ActiveWorkbook.Close True
        fCnt = fCnt + 1
    End If
myCFile = Dir
Loop
Application.EnableEvents = True
If Len(myErr) > 5 Then
    MsgBox ("Tot " & fCnt & " file modificati" & vbCrLf _
       & "Situazioni di errore sui seguenti file:" & vbCrLf & myErr)
Else
    MsgBox ("Tot " & fCnt & " file modificati")
End If
End Sub

Va inserita in un "modulo standard" del vba; le righe marcate <<< sono da personalizzare secondo i commenti.

Quando sei pronto avvia la Sub MassEdit: partendo da Excel, premi Alt-F8; scegli MassEdit dall'elenco di macro disponibili; premi Esegui.
Tutti i file contenuti nella directory dichiarata saranno aperti, modificati e salvati; uno dopo l'altro.
A conclusione del lavoro un messaggio avertira' quanti file sono stati modificati e quali eventualmente hanno manifestato un problema (che va indagato autonomamente).
Oltre che nel msgbox, l'elenco dei file con errore e' visionabile anche nella "finestra Immediata" del vba; per accedere a questa finestra, partendo da una pagina dell'editor delle macro, premere Contr-g

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

Re: Excel copio cella in file aperti

Postdi salatony » 19/03/18 21:32

Ciao,
ho fatto un test, ho creato una cartella principale (mydir="c:\fornitori\), poi all'interno di questa ho creato un'altra cartella di nome fornitori\v\beta\ per il foglio1 (cioe mydest, con la macro), è sempre all'interno della cartella fornitori ho messo 3 file Excel (es.1-2-3).
Ora, apro il file beta e faccio partire la macro (MassEdit), risultato:

Tot.0 file modificati, situazione di err.
Nei file 1-2-3, che ho creato sotto cartella fornitori.

Allora, ho provato a cambiare i valori nei file 1 2 3 ho inserito 0.3 nel file 1, 0.4 nel 2 ecc., ma il risultato non cambia.

Ti chiedo, mi basterebbe inserire il numero (da me deciso) in mynew nel listato, che si andrà a copiare nei file 1 2 3 nella cella es.f5, e poi mi salvi ogni file, senza più i limiti (0.3-0.5)
Ringrazio
Ciao
salatony
Utente Junior
 
Post: 68
Iscritto il: 08/11/13 21:16

Re: Excel copio cella in file aperti

Postdi Anthony47 » 20/03/18 02:17

Chiudi e riavvia Excel, poi esegui la macro.
Confermi che ottieni sempre "0 file modificati"?
Pubblica il codice completo della macro che hai in uso.
Inoltre premi Contr-g per aprire la "finestra Immediata" del vba; copia tutto quello che c'e' scritto e inseriscilo nel prossimo messaggio.

Ti aspetto entro il mese...
Avatar utente
Anthony47
Moderatore
 
Post: 19220
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel copio cella in file aperti

Postdi salatony » 20/03/18 20:34

Ciao,
fatto, riavviato excel, rieseguita macro, risultato: 0 file modificati, qui sotto la macro:
------------------------------------------------------------------
Sub cambiovalori()
Sub MassEdit()
Dim myDir As String, myCFile As String, myErr As String, myDest As String
Dim fCnt As Long, myNew
'
myDest = "C:\fornitori\v\beta\Foglio1" '<<< Il Foglio in cui si creera' il riepilogo
myDir = "C:\fornitori\" '<<< La dir dei file da consolidare (con \ finale)
myNew = 1 '<<< Il nuovo valore da inserire; se e' una stringa, usare le virgolette, es "Nuova Stringa"
'
Debug.Print
Application.EnableEvents = False
myCFile = Dir(myDir & "*.xls*")
Do
If myCFile = "" Then Exit Do
On Error Resume Next
Workbooks.Open (myDir & myCFile)
Sheets(myDest).Range("F5").Value = myNew
If ActiveWorkbook.Name <> myCFile Or _
Sheets(myDest).Range("F5").Value <> myNew Then
On Error GoTo 0
myErr = myErr & myCFile & vbCrLf
Debug.Print myCFile
If ActiveWorkbook.Name <> ThisWorkbook.Name Then
ActiveWorkbook.Close False
End If
Else
ActiveWorkbook.Close True
fCnt = fCnt + 1
End If
myCFile = Dir
Loop
Application.EnableEvents = True
If Len(myErr) > 5 Then
MsgBox ("Tot " & fCnt & " file modificati" & vbCrLf _
& "Situazioni di errore sui seguenti file:" & vbCrLf & myErr)
Else
MsgBox ("Tot " & fCnt & " file modificati")
End If
End Sub

---------------------------------------------------------------------
non so se può essere di aiuto, ma quando apro excel (qualsiasi file) mi dice:
impossibile trovare C:\Program.xls'. , ?
ciao
grazie
salatony
Utente Junior
 
Post: 68
Iscritto il: 08/11/13 21:16

Re: Excel copio cella in file aperti

Postdi salatony » 20/03/18 20:36

dimenticavo, utilizzo office 2000 premium
ciao
salatony
Utente Junior
 
Post: 68
Iscritto il: 08/11/13 21:16

Re: Excel copio cella in file aperti

Postdi Anthony47 » 21/03/18 00:12

Codice: Seleziona tutto
myDest = "C:\fornitori\v\beta\Foglio1" '<<< Il Foglio in cui si creera' il riepilogo

Diciamo che il commento ("Il Foglio in cui si creera' il riepilogo") ti ha portato fuori strada ma la tua attuazione ("C:\fornitori\v\beta\Foglio1") ha completato l'opera.

Il commento giusto avrebbe dovuto essere "Il foglio che sara' modificato (in ognuno dei file che verranno trovati)", e ovviamente ci dovresti inserire il nome del foglio che va modificato ("Foglio1"? "Foglio2"? "Foglio3"? O come si chiama, dando per scontato che non hai un foglio che si chiami "C:\fornitori\etc etc")

Quindi aggiorna l'istruzione e riprova; vediamo se siamo piu' fortunati.

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

Re: Excel copio cella in file aperti

Postdi salatony » 22/03/18 17:33

Ciao
Non capisco,
Ho modificato così:
myDir = "C:\fornitori\alfa\Foglio1\" , aggiungendo la cartella Alfa , che contiene i file da modificare (solo cella f5 di Foglio1 , per tutti i file contenuti in questa cartella), ho provato più volte ma nulla.
ciao
salatony
Utente Junior
 
Post: 68
Iscritto il: 08/11/13 21:16

Re: Excel copio cella in file aperti

Postdi Anthony47 » 23/03/18 01:01

La macro contiene queste istruzioni (ho eliminato i commenti che ti spiego a voce):
Codice: Seleziona tutto
myDest = "Foglio1"                  '<<<
myDir = "D:\PIPPO\Archivio\"        '<<<
myNew = 1                           '<<<

In myDest devi scrivere il nome del foglio in cui bisogna modificare il contenuto di F5; da quanto dicesti il 10-feb si tratta di Foglio1
In myDir devi indicare quale e' la directory in cui si trova il tuo centinaio di file da modificare, con "\" finale; quale sia il valore giusto lo sai solo tu.
In myNew devi inserire il valore che vuoi inserire in F5 in sostituzione del valore attuale.

La dizione "ho provato più volte ma nulla" non capisco cosa significa; almeno il messaggio finale lo ricevi, o "nulla nemmeno quello"?

Ricorda che devi cominciare avendo aperto solo il file che contiene la Sub MassEdit.

Riprova seguendo queste istruzioni; e se ancora "nulla" allora vai nel vba, apri la "finestra Immediata" (basta premere Contr-g), copia quel che ci leggi dentro e pubblicalo nel prossimo messaggio.

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

Re: Excel copio cella in file aperti

Postdi salatony » 23/03/18 21:54

È per-fe-tto,
È stato sufficiente (come hai detto), inserire in myDest solamente l'indicazione "Foglio1" tenendolo aperto, mentre eseguo la sub MassEdit .
Rispondo alle tue domande,

1)in rif.to ho provato più volte, intendevo dire che ho tolto/aggiunto dati alla macro senza capire cosa stessi facendo, ma solo per trovare una soluzione.
2)riguardo al messaggio finale, questo messaggio l'ho sempre ricevuto ma mi diceva: zero file modificati.

Comunque ti ringrazio
Ciao
salatony
Utente Junior
 
Post: 68
Iscritto il: 08/11/13 21:16


Torna a Applicazioni Office Windows


Topic correlati a "Excel copio cella in file aperti":


Chi c’è in linea

Visitano il forum: Nessuno e 58 ospiti