Domanda.

nome=enzo
cognome=miranda
versione=2000
conosco2=medio
macro=SI
email=enzo.miranda@fastwebnet.it
chra=694
problema=in un foglio su alcune caselle ci sono delle immagini il cui nome è stato assegnato da excel.
vorrei in una macro poterle copiare dopo aver selezionato la cella sulla quale sono inserite
Ringrazio in anticipo
Saluti
Enzo
PS ho cercato nel sito senza successo per questo sono obbligato a disturbarti!!

 

Risposta.

salve Enzo, Excel NON assegna il nome alle immagini, tuttalpiù le inserisce come Shapes, e come tali le identifica con un nome.
Vedrai che te le chiama "Picture" seguite da un numero. Per poterle copiare dovrai prima usare un comando per selezionare lo Shapes, e quindi dire dove incollarlo, esempio:
ActiveSheet.Shapes("Picture 1").Select
Selection.Copy
Range("D9").Select
ActiveSheet.Paste

Io non so che numero è la tua immagine, dovrai trovarla da te. Usa il registratore di macro, lo attivi, poi selezioni l'immagine, lo stoppi, e vai a vedere nella macro che ti ha fatto, come è stata chiamata l'immagine selezionata.
Comunque, nonostante tu dica di aver guardato, sull'altro sito, vai a vedere l'articolo "Shapes (Forme) lavorare con gli", nella sezione vba.
Se gli articoli non li leggi, e ti fermi al titolo, non sai se quello che c'è dentro è quello che ti serve.
saluti, ennius
 

Replica di Enzo.

Ennius
faccio seguito alla mia precedente mail per sottoporti questo codice che ho trovato.
Io non sono abbastanza competente ma tu forse rieci a usare questa tecnica.
Se lo ritieni un vicolo cieco non perderci tempo!
Sub CheckShape()
'Find names of objects on a sheet -- Tom Ogilvy 01Nov199
'untested (dmcr) has a range("myzone")
Dim varArr()
Dim shpRange As ShapeRange
ReDim varArr(1 To 1)
i = 0
For Each shp In Worksheets("sheet1").Shapes
If shp.Type = msoFreeform Then
If Not Intersect(Range("MyZone"), _
shp.TopLeftCell) Is Nothing Then
i = i + 1
ReDim Preserve varArr(1 To i)
varArr(i) = shp.Name
End If
End If
Next
Set shpRange = ActiveSheet.Shapes.Range(varArr)
Debug.Print shpRange.Count
For Each shp In shpRange
Debug.Print shp.Name, shp.TopLeftCell.Address
Next
shpRange.Select
End Sub

Ti ringrazio comunque
Saluti Enzo
 

Risposta.
 

vedo che sei poco pratico di vba, quindi ti suggerisco di usare questa routine che ti copia un'immagine contenuta nella cella che selezioni, e te la incolla in un altro foglio di cui però devi scrivere il riferimento:

Sub copia()
Worksheets("Foglio1").Activecell.CopyPicture xlScreen, xlBitmap
Worksheets("Foglio2").Paste Destination:=Worksheets("Foglio2").Range("B2")
End Sub


dove la destinazione in questo esempio è sul Foglio2, nella cella B2. Se tu vorrai incollarla in un'altra cella, dovrai scrivere il riferimento a quella cella al posto di B2.
saluti, ennius