Condividi:        

copia e rinomina grafico

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

copia e rinomina grafico

Postdi piter123 » 11/01/08 11:33

salve, avrei bisogno di un codice vb per selezionare un foglio, copiarlo e poter rinominare la copia in modo tale da poterla successivamente (sempre tramite vb) riselezionarla e modificarne le scale, le dimensioni ecc.
Per quanto riguarda la selezione e copia e incolla no problem, ma come faccio a riselezionare la copia per modificarne il nome e fare le modifiche di scala e dimensioni ?

ActiveSheet.ChartObjects("Grafico 1").Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
Range("K4").Select
ActiveSheet.Paste



grazie
piter123
Utente Senior
 
Post: 190
Iscritto il: 07/11/07 18:31

Sponsor
 

Re: copia e rinomina grafico

Postdi Anthony47 » 12/01/08 01:59

Puoi ottenere il nome del grafico (o altra forma) che insiste su K4 con:
Codice: Seleziona tutto
For Each Pict In ActiveSheet.Shapes
  If Pict.TopLeftCell.Address = "$K$4" Then
  NomeImm = Pict.Name: Exit For
  End If
Next Pict

Il nome viene restituito nella variabile NomeImm; per selezionarlo userai

Codice: Seleziona tutto
ActiveSheet.Shapes(NomeImm).Select


Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: copia e rinomina grafico

Postdi piter123 » 12/01/08 09:46

Perfetto grazie, nel frattempo avevo risolto in maniera meno nobile in questo modo :
nel foglio 1 ho inserito (intanto per prova, poi il codice verrà inserito in una routine più complessa) il seguente codice
Private Sub CommandButton33_Click()
ActiveSheet.ChartObjects("Grafico 1").Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
ActiveWindow.Visible = False
Sheets("HOME").Select
Sheets("HOME").Range("J4").Select
ActiveSheet.Paste
Sheets("HOME").Range("B3") = Mid(ActiveChart.Name, 6, 17)
end sub

il quale estrae e copia in una cella il nome del grafico.


Successivamente nel foglio "HOME" intanto sempre per prova ho inserito in un commandbutton il seguente codice per ridimensionare il grafico
Private Sub CommandButton2_Click()
nomegraf = Range("b3")
ActiveSheet.ChartObjects(nomegraf).Activate
ActiveChart.ChartArea.Select
ActiveSheet.Shapes(nomegraf).ScaleWidth 0.47, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes(nomegraf).ScaleHeight 0.6, msoFalse, _
msoScaleFromTopLeft
ActiveWindow.Visible = False
end sub

se però copio il secondo codice in cascata al primo

Private Sub CommandButton33_Click()
ActiveSheet.ChartObjects("Grafico 1").Activate
ActiveChart.ChartArea.Select
ActiveChart.ChartArea.Copy
ActiveWindow.Visible = False
Sheets("HOME").Select
Sheets("HOME").Range("J4").Select
ActiveSheet.Paste
Sheets("HOME").Range("B3") = Mid(ActiveChart.Name, 6, 17)

nomegraf = Range("b3")
ActiveSheet.ChartObjects(nomegraf).Activate
ActiveChart.ChartArea.Select
ActiveSheet.Shapes(nomegraf).ScaleWidth 0.47, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes(nomegraf).ScaleHeight 0.6, msoFalse, _
msoScaleFromTopLeft
ActiveWindow.Visible = False

End Sub

mi copia dal foglio1 al foglio home il grafico ma quando arriva alla perte di ridimensionamento di dà errore runtime 1004
"impossibile trovare la proprietà chartobjects per la classe worksheet." e evidenzia la riga
ActiveSheet.ChartObjects(nomegraf).Activate

Perchè ?, dove sbaglio ?
piter123
Utente Senior
 
Post: 190
Iscritto il: 07/11/07 18:31

Re: copia e rinomina grafico

Postdi Anthony47 » 13/01/08 00:56

Prova a usare questa istruzione al posto di quella che usi ora:
Codice: Seleziona tutto
nomegraf = Sheets("HOME").Range("b3")

altrimenti leggi B3 del foglio di origine, quello a cui appartiene il codice in esecuzione.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "copia e rinomina grafico":


Chi c’è in linea

Visitano il forum: Marius44, Ricky0185 e 47 ospiti