PDA

Visualizza versione completa : [Excel/Access] Codice VBA/macro


megafaber
29-05-2006, 11.44.08
Ciao a tutti , avrei bisogno di un suggerimento..

Ho diversi fogli di lavoro in un file xls. ogni foglio contiene svariati dati disposti orizzonatalmento e nuemrati progressivamente da 1 a x...Avrei bisogno di scrivere il nome di ogni foglio di lavoro , nella prima colonna del foglio stesso. Mi spiego:

Il foglio di lavoro ha come nome , un n° di telefono: io necessito che questo numero sia riportato nella prima colonna all'interno del foglio , vorrei fare una macro o un codice Vba, ma sono in alto mare..qualche idea ? E se in piu' volessi che questo n° fosse riportato selettivamente solo in alcune celle ?? Celle che ora presentano la numerazione progressiva e che vorrei diventassero semplicemente lo stesso n° ripetuto fino in fondo ??

Grazie a chi vorra darmi una mano ;) Ciao !!

miciomao
29-05-2006, 15.00.21
inserisci questa formula per ottentere il nome del foglio.
ripetila dove vuoi per ottenere lo stesso effetto ;)

=DESTRA(CELLA("filename");LUNGHEZZA(CELLA("filename"))-RICERCA("]";CELLA("filename")))

luklukluk
29-05-2006, 16.48.12
Ciao micio, ho provato la tua formula, ma... nun funzia :(

miciomao
29-05-2006, 17.10.51
Scusa hai ragione :)

nel valore "filename" è contenuto il path del file
Dopo aver inserito la formula salva il file, chiudilo e riaprilo
ora prova a cambiare nome al foglio ;)

luklukluk
29-05-2006, 17.24.24
Cmq, mi sembra ke megafaber abbia bisogno di scrivere il nome del foglio, non del file... potrebbe essergli utile qualcosa del genere:

Sub gigio()
For a = 1 To Worksheets.Count
Sheets(a).Select
Range("A1").Select
ActiveCell.FormulaR1C1 = Sheets(a).Name
Next
End Sub

però mi interessa anke far funzionare la tua formula... ora riprovo ;) :)

megafaber
29-05-2006, 18.12.56
Effettivamente il mio problema era un po' piu' complesso e necessitava una macro cosi' :

For k = 4 To Worksheets.Count
For x = 1 To 1000
y = Worksheets(k).Cells(x, 1).Value

If (IsNumeric(y)) And (y <> "") Then
j = j + 1
Worksheets(1).Cells(j, 1).Value = Mid(Worksheets(k).Name, 5, 15)
Worksheets(1).Cells(j, 2).Value = Worksheets(k).Cells(x, 2).Value
Worksheets(1).Cells(j, 3).Value = Worksheets(k).Cells(x, 4).Value
Worksheets(1).Cells(j, 4).Value = Worksheets(k).Cells(x, 10).Value
Worksheets(1).Cells(j, 5).Value = Worksheets(k).Cells(x, 11).Value


Cosi' facendo mi estrae il nome , e anche altri dati che volevo e me li riassume tutti sul primo foglio, cosi' posso operare con Access direttamente e solo su quello...

Grazie ancora , se perfeziono la cosa, tornero' a postare :D

luklukluk
30-05-2006, 12.12.43
Ah! Ora ho capito cosa devi fare :)
Ma non ho capito se ci sei riuscito oppure ci stai provando ancora :rolleyes:

megafaber
30-05-2006, 20.41.10
Ci sono riuscito ! Ora vorrei perfezionarlo ;)

xelav
03-06-2006, 23.30.24
Se il problema è solo quello che hai scritto nel primo post si può risolvere semplicemente cosi

scaricati morefunc da qui (http://www.freedownloadscenter.com/Business/MS_Office_Add-ins/Morefunc.html)

è freeware poi ti aggiungerà nuove funzioni fra le quali =sheetname()

usa quello è ti scrive il nome del foglio.

saluti.

luklukluk
06-06-2006, 15.02.16
Morefunc molto utile
Tnx xelav
;)