Discussione:
elenco fogli
(troppo vecchio per rispondere)
vicius
2005-04-21 16:53:46 UTC
Permalink
Esiste la possibilità di elencare (e stampare) i nomi dei fogli di una
cartella excel?
Esiste inoltre il modo per ordinarli alfabeticamente (nel foglio excel e non
nell'elenco di cui sopra)?
Grazie
ivano
2005-04-21 17:09:53 UTC
Permalink
Post by vicius
Esiste la possibilità di elencare (e stampare) i nomi dei fogli di una
cartella excel?
Esiste inoltre il modo per ordinarli alfabeticamente (nel foglio excel e non
nell'elenco di cui sopra)?
Grazie
Ciao vicius,
by formula:

Inserisci nome definisci
Nome: fogli
Riferito a: =INFO.CARTELLA.DI.LAVORO(1)

nel foglio ora inserisci la formula:
=INDICE(fogli;RIF.RIGA(A1))
e ricopia in basso

per l'ordine devi aspettare i vbaisti.
ivano
SergioBS
2005-04-21 17:24:48 UTC
Permalink
Post by vicius
Esiste la possibilità di elencare (e stampare) i nomi dei fogli di una
cartella excel?
Esiste inoltre il modo per ordinarli alfabeticamente (nel foglio excel e
non
Post by vicius
nell'elenco di cui sopra)?
Grazie
però... non è elegante ma si potrebbe prendere la lista appena fatta e
ordinarla e poi rinominare i vari foglio in quell'ordine... non è il massimo
però...funzionerebbe....però bisognerebbe rinominare con altro nome a caso
tutti i fogli per evitare un duplicate....vabbè.. però una strada è
aperta...

Sergio
SergioBS
2005-04-21 17:19:16 UTC
Permalink
Post by vicius
Esiste la possibilità di elencare (e stampare) i nomi dei fogli di una
cartella excel?
Esiste inoltre il modo per ordinarli alfabeticamente (nel foglio excel e non
nell'elenco di cui sopra)?
Grazie
Pronti!
la prima
Sub lista()
a = 1
For Each ws In Worksheets
Foglio1.Cells(a, 10) = ws.Name
a = a + 1
Next ws
End Sub

la seconda.. è al di sopra delle mie capacità...

Sergio
Mauro Gamberini
2005-04-21 17:27:18 UTC
Permalink
Post by SergioBS
Sub lista()
a = 1
For Each ws In Worksheets
Foglio1.Cells(a, 10) = ws.Name
a = a + 1
Next ws
End Sub
Scusa Sergio, ma prova ad attivare Option Explicit
e poi esegui la macro....
Insomma....
--
----------------------------
Mauro Gamberini
SergioBS
2005-04-21 22:13:55 UTC
Permalink
Post by Mauro Gamberini
Post by SergioBS
Sub lista()
a = 1
For Each ws In Worksheets
Foglio1.Cells(a, 10) = ws.Name
a = a + 1
Next ws
End Sub
Scusa Sergio, ma prova ad attivare Option Explicit
e poi esegui la macro....
Insomma....
Cioè?
Mauro Gamberini
2005-04-22 07:40:05 UTC
Permalink
Post by Mauro Gamberini
Scusa Sergio, ma prova ad attivare Option Explicit
e poi esegui la macro....
Insomma....
Cioè?
Spiego come posso.

Public Sub m()
a = 1
MsgBox "Valore di a: " & a
End Sub

O se vuoi usare la finestra immediata:

Public Sub m()
a = 1
Debug.Print "Valore di a: " & a
End Sub

Probabilmente nel tuo Excel queste due macro
vengono eseguite.
Nel mio no. E neppure in quelli della maggior parte
dei pc gestiti bene.
Perchè?

Aggiungi questa riga in alto nel modulo:

Option Explicit

Adesso prova a far girare le macro qui sopra.
Visto? Non riconosce più la tua a.
Ripeto, tieni presente che questo settaggio
è la prima cosa che dovrebbe fare chi utilizza vb/vba.

L'Option Explicit viene messo automaticamente
in ogni nuovo progetto se esegui(una volta per tutte)
questa procedura:
Strumenti-->Opzioni
Metti la spunta a :
Dichiarazioni di variabili obbligatoria.

Adesso *devi* obbligatoriamente dichiarare
le tue variabili:

Public Sub m()
Dim a As String
a = "Ciao"
MsgBox "Valore di a: " & a
End Sub

Public Sub m()
Dim a As String
a = "Ciao"
Debug.Print "Valore di a: " & a
End Sub

Dai un'occhiatina a Option Explicit
nella guida del vba.
Post by Mauro Gamberini
Post by SergioBS
Sub lista()
a = 1
For Each ws In Worksheets
Foglio1.Cells(a, 10) = ws.Name
a = a + 1
Next ws
End Sub
Io l'avrei scritta così:

Public Sub mLista()

Dim ws As Worksheet

For Each ws In Worksheets
ActiveSheet.Cells(ws.Index, 1).Value = ws.Name
Next

End Sub

Abito a Cento.
--
----------------------------
Mauro Gamberini
SergioBS
2005-04-22 07:43:31 UTC
Permalink
Post by Mauro Gamberini
Post by Mauro Gamberini
Scusa Sergio, ma prova ad attivare Option Explicit
e poi esegui la macro....
Insomma....
Cioè?
Spiego come posso.
Public Sub m()
a = 1
MsgBox "Valore di a: " & a
End Sub
Public Sub m()
a = 1
Debug.Print "Valore di a: " & a
End Sub
Probabilmente nel tuo Excel queste due macro
vengono eseguite.
Nel mio no. E neppure in quelli della maggior parte
dei pc gestiti bene.
Perchè?
Option Explicit
Adesso prova a far girare le macro qui sopra.
Visto? Non riconosce più la tua a.
Ripeto, tieni presente che questo settaggio
è la prima cosa che dovrebbe fare chi utilizza vb/vba.
L'Option Explicit viene messo automaticamente
in ogni nuovo progetto se esegui(una volta per tutte)
Strumenti-->Opzioni
Dichiarazioni di variabili obbligatoria.
Adesso *devi* obbligatoriamente dichiarare
Public Sub m()
Dim a As String
a = "Ciao"
MsgBox "Valore di a: " & a
End Sub
Public Sub m()
Dim a As String
a = "Ciao"
Debug.Print "Valore di a: " & a
End Sub
Dai un'occhiatina a Option Explicit
nella guida del vba.
Post by Mauro Gamberini
Post by SergioBS
Sub lista()
a = 1
For Each ws In Worksheets
Foglio1.Cells(a, 10) = ws.Name
a = a + 1
Next ws
End Sub
Public Sub mLista()
Dim ws As Worksheet
For Each ws In Worksheets
ActiveSheet.Cells(ws.Index, 1).Value = ws.Name
Next
End Sub
Abito a Cento.
--
----------------------------
Mauro Gamberini
Grazie!

A quanto ne sapevo le variabili andrebbero dichiarate, per aumentare
l'efficienza, non sprecare memoria etc però ho sempre visto funzionare
anche così... vabbè....

Sergio
Mauro Gamberini
2005-04-22 07:57:40 UTC
Permalink
Post by SergioBS
A quanto ne sapevo le variabili andrebbero dichiarate, per aumentare
l'efficienza, non sprecare memoria etc però ho sempre visto funzionare
anche così... vabbè....
Ripeto.
Nel mio pc una cosa così da errore.

E poi:

Public Sub m()
a = 1
Debug.Print "Valore di a: " & a
a = "Ciao"
Debug.Print "Valore di a: " & a
a = True
Debug.Print "Valore di a: " & a
End Sub



Insomma, la tua a che cosa si aspetta?
Che controllo hai?
--
----------------------------
Mauro Gamberini
SergioBS
2005-04-22 08:08:10 UTC
Permalink
Post by Mauro Gamberini
Post by SergioBS
A quanto ne sapevo le variabili andrebbero dichiarate, per aumentare
l'efficienza, non sprecare memoria etc però ho sempre visto funzionare
anche così... vabbè....
Ripeto.
Nel mio pc una cosa così da errore.
Public Sub m()
a = 1
Debug.Print "Valore di a: " & a
a = "Ciao"
Debug.Print "Valore di a: " & a
a = True
Debug.Print "Valore di a: " & a
End Sub
Insomma, la tua a che cosa si aspetta?
Che controllo hai?
Scusa ma non capisco: la mia a non aspetta nulla le ho attribuito il valore
di 1 e la incremento...

comunque il risultato della tua routine è questo:

Valore di a: 1
Valore di a: Ciao
Valore di a: Vero
Valore di a: 1
Valore di a: Ciao
Valore di a: Vero
Valore di a: 1
Valore di a: Ciao
Valore di a: Vero
Valore di a: 1
Valore di a: Ciao
Valore di a: Vero
Valore di a: 1
Valore di a: Ciao
Valore di a: Vero

Che controlli ho?

BOH?

ho appena formattato l'hard disk e reinstallato tutto... WXPSP2 e OXP SP3,
mi sembra

Sergio
Mauro Gamberini
2005-04-22 08:33:19 UTC
Permalink
Post by SergioBS
Scusa ma non capisco: la mia a non aspetta nulla le ho attribuito il valore
di 1 e la incremento...
[cut]
Post by SergioBS
Che controlli ho?
Come che controlli hai?

dim a as string
a=5
ERRORE

dim a as integer
a=1000000
ERRORE

Nell'altro caso hai visto che
non hai errori, semplicemente a si *adatta*.

Se la vedi in un'ottica un po' più vasta
rispetto al fatto che tu utilizzi la tua
a come contatore, non è proprio una bella cosa.
Inoltre guarda qui:

Public Sub mm()
contatore = 1
For i = 1 To 10
cotatore = contatore + 1
Next
Debug.Print contatore
End Sub

Secondo te che risultato avrai nella finestra immediata?
1, mentre ti aspetti 10 e sai perchè?
Perchè, di proposito, ho scritto male contatore all'interno
del ciclo For. Me senza la dichiarazione obbligatoria
delle variabili, non ho nessuna segnalazione di errore ed
è cotatore e non contatore a valere 10.
Se avessi avuto l'Option Explicit avrei avuto un errore
di variabile non dichiarata e quindi il controllo della mia routine.

Poi tu fai come vuoi, no problem.
Tieni presente però, che le tue routine
potrebbero non girare su tutti i pc.
--
----------------------------
Mauro Gamberini
SergioBS
2005-04-22 08:56:44 UTC
Permalink
Post by SergioBS
Post by SergioBS
Scusa ma non capisco: la mia a non aspetta nulla le ho attribuito il
valore
Post by SergioBS
di 1 e la incremento...
[cut]
Post by SergioBS
Che controlli ho?
Come che controlli hai?
dim a as string
a=5
ERRORE
dim a as integer
a=1000000
ERRORE
Nell'altro caso hai visto che
non hai errori, semplicemente a si *adatta*.
Se la vedi in un'ottica un po' più vasta
rispetto al fatto che tu utilizzi la tua
a come contatore, non è proprio una bella cosa.
Public Sub mm()
contatore = 1
For i = 1 To 10
cotatore = contatore + 1
Next
Debug.Print contatore
End Sub
Secondo te che risultato avrai nella finestra immediata?
1, mentre ti aspetti 10 e sai perchè?
Perchè, di proposito, ho scritto male contatore all'interno
del ciclo For. Me senza la dichiarazione obbligatoria
delle variabili, non ho nessuna segnalazione di errore ed
è cotatore e non contatore a valere 10.
Se avessi avuto l'Option Explicit avrei avuto un errore
di variabile non dichiarata e quindi il controllo della mia routine.
Poi tu fai come vuoi, no problem.
Tieni presente però, che le tue routine
potrebbero non girare su tutti i pc.
--
----------------------------
Mauro Gamberini
Grazie del chiarimento, ma le mie routine girano solo sul mio computer....

Sergio
Mauro Gamberini
2005-04-22 09:04:48 UTC
Permalink
Post by SergioBS
Grazie del chiarimento, ma le mie routine girano solo sul mio computer....
Però tu *dai consigli* su questo ng...
--
----------------------------
Mauro Gamberini
SergioBS
2005-04-22 09:04:27 UTC
Permalink
Post by Mauro Gamberini
Post by SergioBS
Grazie del chiarimento, ma le mie routine girano solo sul mio
computer....
Però tu *dai consigli* su questo ng...
--
----------------------------
Mauro Gamberini
Vero....
SergioBS
2005-04-21 22:15:24 UTC
Permalink
Post by Mauro Gamberini
Post by SergioBS
Sub lista()
a = 1
For Each ws In Worksheets
Foglio1.Cells(a, 10) = ws.Name
a = a + 1
Next ws
End Sub
Scusa Sergio, ma prova ad attivare Option Explicit
e poi esegui la macro....
Insomma....
Scusa Mauro.. posso chiederti di dove sei?

Sergio
eliano
2005-04-21 17:22:01 UTC
Permalink
Post by vicius
Esiste la possibilità di elencare (e stampare) i nomi dei fogli di una
cartella excel?
Esiste inoltre il modo per ordinarli alfabeticamente (nel foglio excel e non
nell'elenco di cui sopra)?
Grazie
Ciao Vicius.
Cerca su questo NG: ordinare fogli alfabeticamente del 20/01/04
Saluti a te ed a Ivano
Eliano
Mauro Gamberini
2005-04-21 17:28:48 UTC
Permalink
[cut]

Sei tu il vbaista che cerca Ivano?
--
----------------------------
Mauro Gamberini
eliano
2005-04-21 17:31:02 UTC
Permalink
Post by Mauro Gamberini
[cut]
Sei tu il vbaista che cerca Ivano?
Spero proprio di no; non rappresenterei al meglio la categoria.
Ciao
Eliano
cucchiaino
2005-04-21 19:23:04 UTC
Permalink
Post by vicius
Esiste la possibilità di elencare (e stampare) i nomi dei fogli di una
cartella excel?
Esiste inoltre il modo per ordinarli alfabeticamente (nel foglio excel e non
nell'elenco di cui sopra)?
Ciao v.

Una possibilità è questa:

------------------------------
Sub lista()
Dim a As Long, x As Long
Dim q As String

Worksheets(1).Activate
For a = 1 To Worksheets.Count
Cells(a, 1) = Worksheets(a).Name
Cells(a, 2) = a
Next
a = a - 1
q = ActiveSheet.Name

Range("A1:B" & a).Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo

With Sheets(q)
For x = 1 To a
If .Cells(x, 2).Value <> x Then
Sheets(.Cells(x, 2)).Move Before:=Sheets(x)
End If
Next
.Activate
End With

End Sub

--------------------------------


Buona sera a tutti.

( )---cucchiaino
Franz
2005-04-22 01:11:10 UTC
Permalink
Post by vicius
Esiste la possibilità di elencare (e stampare) i nomi dei fogli di una
cartella excel?
Esiste inoltre il modo per ordinarli alfabeticamente (nel foglio excel e non
nell'elenco di cui sopra)?
Grazie
Esiste un add-in gratuito che si chiama ASAP (lo puoi trovare tramite Google
cercando "ASAP Excel") che, tra le tante funzioni che contiene, permette di
realizzare esattamente ciò che chiedi tu.

Spero d'esserti stato d'aiuto...

Ciao
--
Franz

----------------------------------------------------------------------------------------
per rispondermi traduci InVento in inglese (no maiuscole)
----------------------------------------------------------------------------------------
fernando cinquegrani
2005-04-22 09:30:22 UTC
Permalink
[vicius] scrive in
Post by vicius
Esiste la possibilità di elencare (e stampare) i nomi dei fogli di una
cartella excel?
vedi anche 'indice dei fogli di lavoro' in fondo a
http://www.prodomosua.it/ppage05.html
prova a fare clic sui collegamenti,
prova ad aggiungere o eliminare un foglio.
.f
fernando cinquegrani
Microsoft MVP
http://www.prodomosua.it
vicius
2005-04-22 23:10:35 UTC
Permalink
Grazie a tutti pe i consigli. Ottimo ASAP Utilities
Post by fernando cinquegrani
[vicius] scrive in
Post by vicius
Esiste la possibilità di elencare (e stampare) i nomi dei fogli di una
cartella excel?
vedi anche 'indice dei fogli di lavoro' in fondo a
http://www.prodomosua.it/ppage05.html
prova a fare clic sui collegamenti,
prova ad aggiungere o eliminare un foglio.
.f
fernando cinquegrani
Microsoft MVP
http://www.prodomosua.it
Continua a leggere su narkive:
Loading...