Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

excel codice macro 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 codice macro vba

Postdi gino123454 » 17/12/09 00:41

...vi prego aiutatemi!!!

ho bisogno di una macro per fare questo:
ho 12 cartelle in una cartella ''mesi'' in cui ci sono per ogni mese i rispettivi giorni,
esempio:
C:\Users\...\mesi\gennaio\1.xls
C:\Users\...\mesi\gennaio\2.xls
...
C:\Users\...\mesi\gennaio\31.xls
C:\Users\...\mesi\febbraio\1.xls
..
C:\Users\...\mesi\febbario\28.xls
..etc etc
tutti i file .xls nelle varie cartelle con i nomi dei mesi sono uguali come struttura, io devo solo copiare per ogni file la colonna da b3 a b5 incluse, in un nuovo file ''archivio.xls'' che metto nella directory mesi
C:\Users\...\mesi\archivio.xls
dove copio in ogni riga del file archivio.xls la colonna presa dalle varie cartelle mantenendo un ordine cronologico dal 1 gennaio fino al 31 dicembre
esempio:
- in a1:h1 del file archivio.xls la colonna b3:b5 del file 1.xls nella cartella
C:\Users\...\mesi\gennaio\1.xls
- in a2:h2 del file archivio.xls la colonna b3:b5 del file 2.xls nella cartella
C:\Users\...\mesi\gennaio\1.xls
etc etc

Spero di essere stata chiaro, se mi scrivete il codice vba vi ringrazierò per l'eternità...
gino123454
Newbie
 
Post: 3
Iscritto il: 17/12/09 00:24

Sponsor
 

Re: excel codice macro vba

Postdi Anthony47 » 17/12/09 01:33

Ciao gino123454 e benvenuto nel forum.
Ci sono state alcune discussioni che hanno trattato di temi analoghi, ti rimanderei "per cominciare" alla lettura di queste:
viewtopic.php?f=26&t=64713
viewtopic.php?f=26&t=75455
viewtopic.php?f=26&t=75674

(la prima non e' applicabile su excel2007)

Prova ad impostare la cosa sulla falsariga di quanto li' suggerito, e poi posta man mano che i "cento problemi residui" vengono a galla.

Ciao, ti aspettiamo.
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: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: excel codice macro vba

Postdi gino123454 » 18/12/09 08:49

ciao, grazie per la risposta...c'è un problema di fondo,non ne ho un idea di come si usa vba...se potete salvarmi in qualche modo ...vi prego!!!
gino123454
Newbie
 
Post: 3
Iscritto il: 17/12/09 00:24

Re: excel codice macro vba

Postdi Flash30005 » 18/12/09 21:55

Ciao Gino123454 e benvenuto

Comincia con il registare una macro
da Strumenti > Macro > registra macro
poi fai alcune operazioni muovendo il mouse e spostando celle o copiarle e incollarle etc etc (anche da un foglio ad un altro)
poi fermi la registrazione e
premi i tasti ALT + F11
ti troverai nel codice VBA appena registrato
ogni volta che riesegui la macro farà tutto ciò che hai fatto tu manualmente solo... un "pochino" più veloce :lol:
Nel VBA modulo puoi avviare la macro passo-passo (detto Debug) con il tasto F8 e vedere riga dopo riga come avvengono le "operazioni" e potrai interpretare il significato del codice appena eseguito

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: excel codice macro vba

Postdi Anthony47 » 19/12/09 14:02

In aggiunta a quanto detto da Flash:
Usa quanto detto nella seconda discussione che ti ho linkato per crearti l' elenco dei file che devi processare (in particolare vedi questo messaggio: viewtopic.php?f=26&t=75455#p428651); cioe' ti posizioni nella directory " C:\Users\...\mesi\ " e poi userai il comando "ATTRIB *.xls /s >C:\pippo123.txt" (senza apici).
Poi ti crei il tuo file "Archivio.xls" e importi l' elenco in un suo foglio (come da istruzioni nel messaggio).
A questo punto registri una macro mentre esegui, partendo dal file Archivio e dal foglio che contiene l' elenco file:
-attivi la registrazione macro (Menu /Strumenti /Macro /Registra nuova macro)
-apri uno dei file da lavorare
-attivi il foglio su cui ci sono i dati da prelevare
-copi le celle che ti interessano
-attivi il file Archivio
-attivi il foglio in cui vuoi copiare i dati, e ci incolli quanto hai copiato prima
-torni al file da cui hai prelevato i dati, e lo chiudi senza salvare.
-interrompi la registrazione macro (Menu /Strumenti /Macro /Interrompi registrazione).

A questo punto pubblichi le istruzioni che sono state registrate: da excel, Alt F8, selezioni dall' elenco la macro che hai registrato, premi Modifica; ti si apre l' editor delle macro, dove trovi il codice generato: copialo e incollalo nel messaggio del forum; ti aiuteremo a trasformare quella macro in codice generico che "lavora" tutto l' elenco dei file che hai ottenuto.

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: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: excel codice macro vba

Postdi gino123454 » 20/12/09 16:57

da b3 a b10
Salve, grazie in anticipo per le vostre risposte, allora ho ottenuto tramite aiuti questo codice che vi scrivo sotto,
ho implementato il codice in un file archivio.xls, ma ho dei problemi,il codice gira ma non si ferma mai, non capisco dove ho sbagliato,
il codice che ho scritto è questo:

---------------------------------------------------
Private Function LeggiValore(percorsoWBook As String, nomeWBook As String, nomeWSheet As String, indirizzo As String) As Variant

Dim strMacro As String
strMacro = "'" & percorsoWBook & "[" & nomeWBook & "]" & nomeWSheet & "'!" & Range(indirizzo).Address(True, True, xlR1C1)
LeggiValore = ExecuteExcel4Macro(strMacro)

End Function
____________________________
Private Function UltimaRigaUtile(nomeFoglio As String) As Long

Dim UR As Long
If WorksheetFunction.CountA(Worksheets(nomeFoglio).Cells) > 0 Then
UR = Worksheets(nomeFoglio).Cells.Find(What:="*", After:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
UltimaRigaUtile = UR
Else
UltimaRigaUtile = 0
End If

End Function
________________________
Sub Macro8()
Dim cartellaRoot As String
cartellaRoot = ThisWorkbook.Path & "\"
Dim cartellaMese As String
Dim arrayMesi() As Variant
arrayMesi = Array("gennaio", "febbraio", "marzo", "aprile", "maggio", "giugno", "luglio", "agosto", "settembre", "ottobre", "novembre", "dicembre")
Dim nomeFileGiorno As String

Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim numRiga As Long

For i = 0 To UBound(arrayMesi)
cartellaMese = arrayMesi(i)
For j = 1 To 31
numRiga = UltimaRigaUtile("Foglio1") + 1
nomeFileGiorno = j & ".xls"
If Dir(cartellaRoot & cartellaMese & "\" & nomeFileGiorno) <> "" Then
For k = 1 To 8
Cells(numRiga, k).FormulaR1C1 = LeggiValore(cartellaRoot & cartellaMese & "\", nomeFileGiorno, "01", "B" & (k + 2))
Next k
End If
Next j
Next i
MsgBox "FATTO. "
End Sub
----------------
Come vi avevo scritto ho creato le cartelle in questo ordine:

C:\Users\...\Desktop\mesi\
in questa cartella sul desktop ci sono il file archivio.xls (qui ho messo tutte le function e macro ) e le cartelle con i nomi dei mesi gennaio,febbraio etc..
nelle cartelle con i nomi dei mesi ci sono i vari file da dove estrarre le celle da b3 a b10 in colonna (avevo scritto male nelle precedenti discussioni) e copiarle in accodamento dal primo in a1:h1 nelle successive righe di archivio.xls( le celle b3:b10 di 1.xls di gennaio in a1:h1 di archivio.xls, ..., le celle b3:b10 del file 3.xls in gennaio in a3:h3 di archivio.xls...etc etc)
C:\Users\...\Desktop\mesi\gennaio\1.xls
C:\Users\...\Desktop\mesi\gennaio\2.xls
...
C:\Users\...\Desktop\mesi\febbraio\1.xls
etc

nel codice il ''Foglio1'' è del file archivio.xls dove devo riportare i dati estratti, mentre nella pagina dei file giornalieri (1.xls,2.xls...) la pagina da dove estraggo i file è indicata come ''01'' in tutti.
In pratica ho creato un pulsante sulla pagina ''Foglio1'' di archivio.xls e gli ho associato una macro . Purtroppo vedo che gira ma non si ferma mai e non copia niente in Foglio1.
Aiutatemi...vi prego!!!

PS Scusatemi per la mia ignoranza in materia..
gino123454
Newbie
 
Post: 3
Iscritto il: 17/12/09 00:24

Re: excel codice macro vba

Postdi Anthony47 » 21/12/09 03:08

La strada che hai deciso di percorrere e' inutilmente piu' complessa di quella che ti avevo suggerita.

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: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "excel codice macro vba":


Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti