Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[EXCEL] Macro che scrive altre macro

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] Macro che scrive altre macro

Postdi luca2002for » 07/04/07 17:32

Ciao a tutti amici :-)

Un quesito che forse potrà interessare (ed essere utile) a quelli che come me compilano spesso macro in qualche modo "ripetitive" e hanno bisogno di scriverne tante in un foglio.

Mi spiego meglio. Ho questa semplicissima macro

Codice: Seleziona tutto
Sub acquistobook1()
    Sheets("BO").Select
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "C"
    Range("W2").Select
    Selection.Copy
    Range("E2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Range("B1").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    Range("A1").Select
End Sub


...Come altre volte mi è successo nel mio lavoro, dovrei scriverne circa 300 di simili, che cambiano solo per il fatto che

a) - si chiamano "acquisto2", "acquisto3", e così via

b) - cambiano tre riferimenti e cioè C2 che diventa rispettivamente C3, C4 e così via, W2 che diventa W3, W4 e così via e E2 che diventa E3, E4 e via discorrendo.

Questo problema mi è capitato diverse volte e lo ho sempre risolto da "ammanuense" cioè, con pazienza, scrivendo una per una le macro che mi occorrevano.

Questa soluzione, oltre chè essere piuttosto laboriosa (e in qualche modo antitetica rispetto al concetto stesso di computer, macchina che dovrebbe rendere più veloce proprio il lavoro ripetitivo) è anche rischiosa, perchè facendo la compilazione a mano la probabilità di commettere qualche errore aumenta considerevolmente (insieme con la difficoltà, una volta commesso, di riuscire poi a trovarlo, tra centinaia di righe di codice).

Mi chiedevo se, a livello di principio generale, c'è qualcuno che sappia come potrei orientarmi per riuscire in modo anche solo semi-automatico a far creare al pc le trecento macro che mi servono.

Ovviamente, sempre che sia possibile. Io mi sto scervellando tra copia e incolla, riempimento automatico, ecc. ma lo "spauracchio" di scriverle tutte una per una si fa sempre più concreto.

So che se c'è qualcuno che può darmi una dritta giusto per cominciare (e, visto che questo tipo di lavoro devo farlo molte volte, anche solo un piccolo suggerimento sarebbe per me importante) questo qualcuno è in questo forum.

Vi ringrazio sin da ora per l'attenzione.

Un abbraccio a tutti gli excelliani con gli auguri di una tranquilla Pasqua.

:-) Luca
luca2002for
Utente Senior
 
Post: 116
Iscritto il: 07/05/06 09:32

Sponsor
 

Postdi Anthony47 » 08/04/07 00:41

Ciao,
ma perche' ti servono 300 macro, e come hai pensato di attivarle?

Piu' in generale, spiega anche "che cosa" hai bisogno di fare, non solo "come" pensi di farlo (scrivere 300 macro); magari vengono fuori suggerimenti piu' azzeccati.

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

Parziale autorisposta

Postdi luca2002for » 08/04/07 09:14

Pensandoci e ripensandoci (e formulando meglio il mio quesito) in pratica mi servirebbe una macro che, dato un codice di partenza con una variabile n

Sub acquistobook(n)()
Sheets("BO").Select
Range("C(n+1)").Select
ActiveCell.FormulaR1C1 = "C"
Range("W(n+1)").Select
Selection.Copy
Range("E(n+1)").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = ""
Range("A1").Select
End Sub


potesse generare, a partire da n=1 e fino a n=300 il testo, una per una, delle macro che mi servono.

E' solo una mezza soluzione, anche perchè non sono ancora capace a scrivere il relativo codice....

(mi scuso se non ho evidenziato come si dovrebbe il codice della macro, ma volevo far apparire in neretto n e n+1)

Grazie

Luca
luca2002for
Utente Senior
 
Post: 116
Iscritto il: 07/05/06 09:32

L'altra mezza risposta

Postdi luca2002for » 08/04/07 20:04

....Alle volte nello sforzarsi per porre un quesito in maniera comprensibile si gettano incosapevolmente le basi per risolverlo da noi stessi.

Se a qualcuno interessasse, ho risolto (anche se in maniera un pò barbara, lo ammetto) il problema della creazione delle macro.

1) - Metto le righe del codice su un foglio di excel (staccando opportunamente in colonne separate le parti del codice). Esempio:

subacquisto|1|()|Range|(|"|BO|1|"|)| ....ecc. ecc.

....alla fine di ogni riga metto un simbolo. Il punto interrogativo per esempio va benissimo. Lo metto ogniqualvolta voglio che ci sia, successivamente, un "a capo".

2) - Con il trascinamento riempio le mie trecento righe sul foglio di excel.

3) - Seleziono tutto e copio.

4) - Incollo speciale (testo non formattato) su word.

5) - Seleziono tutto e poi utilizzo modifica-trova-sostituisci intanto mettendo il segno di paragrafo al posto di tutti i punti interrogativi. E poi usando le varie funzioni "speciale" di modifica-trova-sostituisci. Per esempio è utilissima la funzione tabulazione che, sostituita con "niente" permette di togliere tutti gli spazi bianchi lasciati a causa delle colonne di excel.

Insomma, è un metodo non certo elegante, ma mi permette di scrivere 300 macro in 10 minuti anzichè in 12 ore, con la sicurezza che siano tutte giuste.

Grazie a tutti per l'attenzione e un saluto particolare a Anthony e Alexandra.

Buona Pasqua!

:-) Luca
luca2002for
Utente Senior
 
Post: 116
Iscritto il: 07/05/06 09:32


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] Macro che scrive altre macro":


Chi c’è in linea

Visitano il forum: patel e 6 ospiti