Grazie
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
Ciao e grazie
Pasquale
>-----Messaggio originale---
>.
>
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
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---
>.
>
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
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
>.
>
Ciao e grazie
>-----Messaggio originale---
>.
>
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
Grazie
>-----Messaggio originale---
>.
>
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