Moderatori: Anthony47, Flash30005
Option Base 1
Public ElencoFile(), percorso As String
Public ContatoreFile As Integer
Public TOTALE As Variant
Sub ricerca() ''<===costruiamo l'array ElencoFile() che conterrà tutti _
gli xls contenuti nel percorso dato
Dim StringaAppoggio As String
percorso = "G:\ABCD\CONTA_FILES\" '<===== quì il tuo percorso
ContatoreFile = 1
ReDim Preserve ElencoFile(ContatoreFile)
StringaAppoggio = Dir(percorso & "*.xls")
ElencoFile(ContatoreFile) = StringaAppoggio
While StringaAppoggio <> ""
StringaAppoggio = Dir()
If StringaAppoggio <> "" Then
ContatoreFile = ContatoreFile + 1
ReDim Preserve ElencoFile(ContatoreFile)
ElencoFile(ContatoreFile) = StringaAppoggio
End If
Wend
SOMMA_FILES
End Sub
Sub SOMMA_FILES()
TOTALE = 0 ' non ho capito perchè, ma senza questo azzeramento mi riportava il valore dell'esecuzione precedente ;-)
For OGNIFILE = 1 To ContatoreFile
TOTALE = TOTALE + PrendiDati(percorso, ElencoFile(OGNIFILE), "Foglio1", "B32") 'correggi se necessario il nome del foglio e quello della cella ricorrente
Next OGNIFILE
Range("B32").Value = TOTALE 'io ho usato B32 del foglio "somma" per visualizzare il totale, _
tu, ovviamente, puoi adattarlo alle tue esigenze
End Sub
Private Function PrendiDati(percorso, nomefile, Foglio, rif)
Dim Arg As String
Arg = "'" & percorso & "[" & nomefile & "]" & Foglio & "'!" & Range(rif).Range("A1").Address(, , xlR1C1)
PrendiDati = ExecuteExcel4Macro(Arg) 'preleva il dato
End Function
Anthony47 ha scritto:Ciao alxleon2000, benvenuto nel forum.
Credo che l' idea di Gigi_ potrebbe risolverti il problema; la macro si attende di avere nel suo listato la directory del mese (vedi riga con commento "<===== quì il tuo percorso"), del foglio / cella che vuoi sommare (vedi riga con commento "correggi se necessario il nome del foglio e quello della cella ricorrente") e della cella in cui vuoi scrivere il risultato.
E' possibile che il tuo processo non possa convivere con queste impostazioni, ad esempio se hai bisogno di creare nello stesso file master riepiloghi di piu' celle o di piu' mesi.
Diciamo che alla tua domanda "Avrei bisogno di sapere se possibile sommare Es " b32 " di vari file in una unica cella di un foglio master" la risposta e' Si; se la proposta di Gigi_ non e' idonea allora devi descrivere il tuo processo e il tuo obiettivo e cercheremo di sviluppare ulteriormente la proposta.
Ciao a tutti.
Anthony47 ha scritto:Perdona, mi sembra una analisi almeno superficiale... non hai nemmeno confermato se l' ipotesi di Gigi_ e' corretta o no.
Detto che "si puo' fare" adesso devi dire esattamente che cosa ti serve fare; o ci chiedi di preparare un compendio di tutto cio' che con excel si puo' fare?
Ciao
Anthony47 ha scritto:Perdona, mi sembra una analisi almeno superficiale... omissis... devi dire esattamente che cosa ti serve fare.....omissis.....Ciao
Es " D:\FLASH_2013
Sotto cartelle 01 Gennaio 02 Febbraio ecc ecc
così non sarei legato ad un mese
percorso = "D:\01 GENNAIO\" '<===== qui il tuo percorso
questo foglio dovrebbe riportare il totale di ogni mese
una cella gennaio una febbraio
Il foglio master non l'ho ancora definito bene
Option Base 1
Public ElencoFile(), percorso, path(12) As String
Public cdestinazione(2), cprelievo(2) As String '<=== gli indici di cdestinazione e c prelievo _
=numero dei campi dei quali vuoi la somma
Public mese, sommacelle As Integer
Public ContatoreFile As Integer
Public TOTALE As Variant
Sub ricerca() ''<===costruiamo l'array ElencoFile() che conterrà tutti _
gli xls contenuti nel percorso dato
corrispondenze
For mese = 1 To 12
Dim StringaAppoggio As String
percorso = path(mese) '<===== quì il tuo percorso
ContatoreFile = 1
ReDim Preserve ElencoFile(ContatoreFile)
StringaAppoggio = Dir(percorso & "*.xls")
ElencoFile(ContatoreFile) = StringaAppoggio
While StringaAppoggio <> ""
StringaAppoggio = Dir()
If StringaAppoggio <> "" Then
ContatoreFile = ContatoreFile + 1
ReDim Preserve ElencoFile(ContatoreFile)
ElencoFile(ContatoreFile) = StringaAppoggio
End If
Wend
Next mese
For sommacelle = 1 To 2 '<=== numero dei campi dei quali vuoi la somma
SOMMA_FILES
Next sommacelle
End Sub
Sub SOMMA_FILES()
TOTALE = 0 ' non ho capito perchè, ma senza questo azzeramento mi riportava il valore dell'esecuzione precedente ;-)
For OGNIFILE = 1 To ContatoreFile
TOTALE = TOTALE + PrendiDati(percorso, ElencoFile(OGNIFILE), "Foglio1", cprelievo(sommacelle)) 'correggi se necessario il nome del foglio
Next OGNIFILE
Range(cdestinazione(sommacelle)).Value = TOTALE
End Sub
Private Function PrendiDati(percorso, nomefile, Foglio, rif)
Dim Arg As String
Arg = "'" & percorso & "[" & nomefile & "]" & Foglio & "'!" & Range(rif).Range("A1").Address(, , xlR1C1)
PrendiDati = ExecuteExcel4Macro(Arg) 'preleva il dato
End Function
Sub corrispondenze()
'--------PERCORSI--------
path(1) = "H:\Flash 2013\01 Gennaio\"
path(2) = "H:\Flash 2013\02 Febbraio\"
path(3) = "H:\Flash 2013\03 Marzo\"
path(4) = "H:\Flash 2013\04 Aprile\"
path(5) = "H:\Flash 2013\05 Maggio\"
path(6) = "H:\Flash 2013\06 Giugno\"
path(7) = "H:\Flash 2013\07 Luglio\"
path(8) = "H:\Flash 2013\08 Agosto\"
path(9) = "H:\Flash 2013\09 Settembre\"
path(10) = "H:\Flash 2013\10 Ottobre\"
path(11) = "H:\Flash 2013\11 Novembre\"
path(12) = "H:\Flash 2013\12 Dicembre\"
'----------CELLE DI PRELIEVO------
cprelievo(1) = "B32"
cprelievo(2) = "D23"
'ETC---ETC---ETC
'----------CELLE DI DESTINAZIONE------
cdestinazione(1) = "A1"
cdestinazione(2) = "A2"
'ETC---ETC---ETC
End Sub
Torna a Applicazioni Office Windows
Come evidenziare aree separate di un foglio Autore: Ricky0185 |
Forum: Applicazioni Office Windows Risposte: 18 |
Inserire dati filtrati da 2 file ad un terzo file Autore: Ricky0185 |
Forum: Applicazioni Office Windows Risposte: 14 |
File batch per copiare file selezionato da menu contestuale Autore: valle1975 |
Forum: Programmazione Risposte: 3 |
Visitano il forum: Nessuno e 26 ospiti