Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Come creare un nuovo foglio di lavoro ed assegnarli un nome

5,676 views
Skip to first unread message

Pasquale

unread,
Oct 22, 2003, 6:32:56 AM10/22/03
to
Come è possibile tramite codice VBA creare un nuovo foglio
di lavoro in Excel?
So che si utilizza l'istruzione Worksheets.Add, ma così si
crea un foglio denominato "Foglio1".
Io però necessito, tramite VBA, cambiare questo nome.
Attenzione: la proprietà che vorrei settare (se è
possibile) è quella che nella finestra proprietà è
indicata come (Name); in altri termini, una volta creato
il foglio, non vorrei riferirmi ad esso come Foglio1 o
Sheet1, ma come un nome scelto da me.

Grazie

Pasquale

Roberto Restelli

unread,
Oct 22, 2003, 6:43:36 AM10/22/03
to
Ciao Pasquale.

Pasquale wrote:
> Come è possibile tramite codice VBA creare un nuovo foglio
> di lavoro in Excel?
> So che si utilizza l'istruzione Worksheets.Add, ma così si
> crea un foglio denominato "Foglio1".

Il metodo ".Add" è in grado di restituirti un riferimento all'oggetto appena
creato. Utilizza quindi tale riferimento per riprendere il Foglio e
cambiarne la proprietà ".Name". Questo è un esempio di codice:
==================
'...
Dim oFoglio As Worksheet

Set oFoglio = ActiveWorkbook.Worksheets.Add
oFoglio.Name = "Pippo"
'...
==================

Se hai altri problemi, facci sapere.
Ciao
Roberto


Pasquale

unread,
Oct 22, 2003, 8:39:50 AM10/22/03
to

Ho provato il tuo suggerimento, ma mi dà un errore
a run-time, in corrispondenza dell'istruzione
"set oFoglio = ActiveWorkbook.Worksheets.Add":
variabile oggetto o variabile del blocco With non
impostata.
Non ho scritto alcun blocco With.

Ciao e grazie

Pasquale


>-----Messaggio originale---

>.
>

Roberto Restelli

unread,
Oct 22, 2003, 8:53:03 AM10/22/03
to
Ciao Pasquale.

Pasquale wrote:
> Ho provato il tuo suggerimento, ma mi dà un errore
> a run-time, in corrispondenza dell'istruzione
> "set oFoglio = ActiveWorkbook.Worksheets.Add":

Sei sicuro di avere inserito la riga con l'istruzione "Dim oFoglio As
WorkSheet" ?
Se l'hai già fatto prova a sostituire la riga che hai segnalato sopra con:

set oFoglio = Worksheets.Add

oppure

set oFoglio = ThisWorkbook.Worksheets.Add

Se invece continui ad avere problemi prova a postare tutta la procedura che
stai scrivendo (così controlliamo se ci sono errori).
Ciao
Roberto


Pasquale

unread,
Oct 22, 2003, 9:07:26 AM10/22/03
to
Ti invio la semplice sub che stavo provando

Sub PINO()
Dim oFoglio As Worksheet

oFoglio = ThisWorkbook.Worksheets.Add
oFoglio.Name = "Pippo"

End Sub

Questo è l'ultimo dei tuoi suggerimenti che ho
provato.

Ciao e grazie

>-----Messaggio originale---

>.
>

Roberto Restelli

unread,
Oct 22, 2003, 9:12:07 AM10/22/03
to
Ciao Pasquale.

Pasquale wrote:
> Sub PINO()
> Dim oFoglio As Worksheet
> oFoglio = ThisWorkbook.Worksheets.Add
> oFoglio.Name = "Pippo"
> End Sub

Dove è posizionata questa procedura?
Tieni conto che:
"ActiveWorkbook" ti retituisce il riferimento alla cartella attiva;
"ThisWorkbook" ti restituisce il riferimento alla cartella che contiene la
procedura;
"Workbooks("Cartel1.xls")" ti restituisce il riferimento alla cartella
"Cartel1.xls"

Ciao
Roberto


Pasquale

unread,
Oct 22, 2003, 9:22:31 AM10/22/03
to

Vi e' una mia errata corrige. Nelle ultime prove
non ho scritto lo statement "set". Il tuo suggerimento
funziona, ma non è esattamente ciò che volevo.

Volevo sapere se era possibile e come modificare
il nome di un nuovo foglio, cioè la proprietà (name)
del foglio creato; in altri termini la proprietà name
che compare fra parentesi tonde ed è la prima che si
vede nelle proprietà del foglio se sceglo gestione
progetti in fase di modifica di una macro.
Ci sono 2 proprietà chiamate "Name", una fra parentesi
tonde, l'altra no.
Con i suggerimenti che mi hai inviato, io modifico quella
non compresa nelle parentesi.
Vorrei (se possibile!) modificare il nome Foglio1 o Sheet1

Ciao e grazie

>.
>

Pasquale

unread,
Oct 22, 2003, 9:32:14 AM10/22/03
to

Prima della tua risposta, ho scritto un'errata corrige,
cioè ho dimenticato il "set". E' da leggere.
E' un problema relativo per ora indicare la cartella:
la macro è prevista in una mia cartella.xls e quindi va
bene la cartella attiva.
Se leggi la mia errata corrige, troverai scritto perchè
la tua soluzione non e' proprio quella che mi aspettavo.

Ciao e grazie

>-----Messaggio originale---

>.
>

Roberto Restelli

unread,
Oct 22, 2003, 12:26:39 PM10/22/03
to
Ciao Pasquale.

Pasquale wrote:
> Vi e' una mia errata corrige. Nelle ultime prove
> non ho scritto lo statement "set". Il tuo suggerimento
> funziona, ma non è esattamente ciò che volevo.

OK.

> Volevo sapere se era possibile e come modificare
> il nome di un nuovo foglio, cioè la proprietà (name)
> del foglio creato; in altri termini la proprietà name
> che compare fra parentesi tonde ed è la prima che si
> vede nelle proprietà del foglio se sceglo gestione
> progetti in fase di modifica di una macro.

Ufficialmente, non è possibile.
La proprietà "Worksheet.Name" (come illustrato nel mio esempio di codice
inviato in precedenza) agisce sulla proprietà "Name" che vedi nella finestra
delle proprietà, ed è in lettura/scrittura (cioè puoi leggerlo e
modificarlo).
Per accedere alla proprietà "(name)" nella finestra delle proprietà bisogna
agire sulla proprietà "Worksheet.CodeName" che invece è a sola lettura
(quindi significa che puoi leggerla ma non cambiarla).

Esiste però una possibilità! Esiste una proprietà di interfaccia per
l'oggetto "Worksheet" che è nascosta, ed è la proprietà "_CodeName". Tale
proprietà è nascosta perchè viene utilizzata normalmente solo da Excel (per
esempio quando in modalità di progettazione con il VisualBasicEditor si
interviene tramite finestra delle proprietà su "(name)" ).

Passiamo quindi a gestire il codice in maniera *speciale* utilizzando metodi
e proprietà che potrebbero non essere ufficialmente supportati e che
potrebbero variare con le diverse versioni di Excel. Parliamo quindi di
utilizzare un "trucco", e questo è il codice:
===================


'...
Dim oFoglio As Worksheet

Set oFoglio = ActiveWorkbook.Worksheets.Add
oFoglio.[_CodeName] = "Pippo"
'...
====================

Le parentesi quadre sono obbligatorie in quanto il carattere underscore
("_") non è utilizzabile nella normale sintassi di Visual Basic (e VBA).
Attenzione in ogni caso all'utilizzo di questo codice: formalmente non è
supportato! :-p

Ciao
Roberto


Pasquale

unread,
Oct 23, 2003, 10:53:02 AM10/23/03
to

La soluzione fornitami è quella desiderata.
Capisco che ufficialmente non esiste, però viene
rilevato un errore a run-time, anche se il nuovo
foglio viene creato come volevo.
Ora, volevo cercare di ignorare l'errore, tipo
"on error" come in VBScript.

Grazie


>-----Messaggio originale---

>.
>

Roberto Restelli

unread,
Oct 23, 2003, 12:42:32 PM10/23/03
to
Ciao Pasquale.

Pasquale wrote:
> La soluzione fornitami è quella desiderata.

Bene! :-)

> Capisco che ufficialmente non esiste, però viene
> rilevato un errore a run-time, anche se il nuovo
> foglio viene creato come volevo.
> Ora, volevo cercare di ignorare l'errore, tipo
> "on error" come in VBScript.

Può capitare, a seconda delle versioni di Excel (e delle relative librerie).
Nel mio codice non ho inserito codice per la gestione degli errori, ma
questo va sicuramente inserito.
Se vuoi evitare la visualizzazione del messaggio di errore puoi inserire
l'istruzione:
On Error Resume Next
che ignora l'errore e prosegue l'esecuzione del codice alla successiva
istruzione.

Ciao
Roberto


vag...@gmail.com

unread,
Apr 10, 2020, 11:37:17 AM4/10/20
to
' con Excel 365 questo codice funziona,

' ho integrato al codice di "Roberto Restelli"
' la possibilità di inserire il nome scelto da noi

Sub CreaFoglio()

Dim oFoglio As Worksheet
Dim Pippo

' foglio di patenza (Foglio1)
' nella cella A1 scrivere il nome da assegnare mi raccomando univoco

Pippo = Range("A1")

Set oFoglio = ActiveWorkbook.Worksheets.Add
oFoglio.Name = Pippo

Sheets("Foglio1").Select 'torna al foglio di partena
Range("A1").Select

End Sub

Ammammata

unread,
Apr 14, 2020, 3:19:18 AM4/14/20
to
Il giorno Fri 10 Apr 2020 05:37:13p, ** ha inviato su
microsoft.public.it.office.excel il messaggio news:024aef45-6764-4604-85a5-
9d271b...@googlegroups.com. Vediamo cosa ha scritto:

> Il giorno mercoledì 22 ottobre 2003 12:32:56 UTC+2, Pasquale ha scritto:
>> Come è possibile tramite codice VBA creare un nuovo foglio
>> di lavoro in Excel?
>

beh, se è stato perseverante e ha controllato il niusgruppo costantemente
negli ultimi 17 anni, alla fine la sua domanda ha finalmente avuto una
risposta :)

--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........
0 new messages