Cambiare nome al foglio excel con una macro

venerdì 20 giugno 2008 - 16.10

alkes83 Profilo | Junior Member

Salve a tutti!!

Devo compiere questa operazione in linguaggio VB

Situazione attuale:
ho dei file .csv che apro con excel (vi ricordo che i file csv hanno un solo foglio) che hanno nomi diversi, quindi ogni file avrà un nome del foglio diverso dagli altri.

Obiettivo:
devo cambiare nome al foglio dei file csv

Problema:
la macro in se è semplice, però il problema è che parto sempre con un nome del foglio diverso, quindi se registro la macro con un foglio qualsiasi, nella macro comparirà sempre il nome del foglio con cui l'ho registrata.

Sub Macro1()

Sheets("BT - 2007-08-27 2007-09-09 KM").Select
Sheets("BT - 2007-08-27 2007-09-09 KM").Name = "mese intero_maggio"
Range("G26").Select
End Sub

Ecco la macro, il problema è che il nome del foglio con cui l'ho registrata è BT - 2007-08-27 2007-09-09 KM mentre la prox volta sarà diverso.

Posso rendere questa operazione indipendente dal nome del foglio in cui la faccio?
Se si come?

Grazie.

p.s. scusate la lunghezza del msg

Dainesi Profilo | Senior Member

Innanzi tutto la macro devi trasferirla in un modulo Bas dimodoché è indipendente dal foglio. In secondo luogo vedi che il nome della cartella è racchiuso tra virgolette ? Bene, questo significa che per te risulta semplice parametrizzare l'istruzione con l'inserimento di una variabile stringa che a sua volta cambia valore in relazione all'elemento considerato dell'insieme Sheets.

alkes83 Profilo | Junior Member

L'ho gia resa indipendente dal foglio, infatti ogni volta che apro excel compare la macro, per il resto visto che sono ignorante ( molto ignorante in VB ) puoi darmi dirmi la stringa completa che devo inserire?

Scusami e grazie

Dainesi Profilo | Senior Member

Dunque ... in Excel devi controllare l'insieme WorkBooks (le Cartelle di lavoro ovvero i files .xls) e, all'interno di ognuno di questi, l'insieme WorkSheets (i fogli di lavoro)

Quindi, riepilogando:

Dim oWk as WorkBook
Dim oSh as WorkSheet

For each oWk in Excel.WorkSheets
For Each oSh in oWk.WorkSheets
If oSh.Name = strNomeCercatp Then oSh.Name = strNomeVoluto
Next
Next

Ho buttato giù il codice a memoria, prova a vedere se funziona. Tieni conto che parto dal presupposto che tu conosci il nome del foglio da rinominare (strNomeCercato) e che hai già stabilito il nome in sostituzione (strNomeVoluto)

alkes83 Profilo | Junior Member

Il problema è che i nomi dei file sono ogni volta diversi, quindi la strNomeCercato cambia di ogni volta.

Io vorrei cercare di rendere la macro indipendente dal qualsiasi nome del foglio.

Spero di essermi spiegato bene.

Dainesi Profilo | Senior Member

Non dimenticare che l'Item di un insieme può essere richiamato per nome o ... per il suo ordinale!!!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5