Cuando una imagen se inserta en una hoja de cálculo de Excel utilizando el método Shapes.AddPicture (...), Excel le da un nombre "Imagen 1", "Foto 2", etc automáticamente.¿Cómo obtener el nombre interno de la forma en Excel
Este nombre se puede utilizar para obtener una referencia a este objeto de forma en la recolección de formas como Shapes.Item ("Imagen 1"). Si el nombre se cambia en Excel utilizando el cuadro de nombre, hay dos nombres diferentes (o uno de ellos es una clave/título) a través del cual se puede hacer referencia al objeto de forma. Así que si cambio el nombre a "mypic" Puedo utilizar cualquiera de ellos para hacer referencia a una forma en la recolección de Formas:
Shapes.Item("Picture 1")
OR
Shapes.Item("MyPic")
El nombre se puede acceder mediante la propiedad Shape.Name en VBA pero ¿cómo podemos acceder a la otra valor (MyPic) que no parece cambiar internamente?
ACTUALIZADO
Lo que estoy tratando de hacer es vincular una celda a una imagen en Excel. Guardo los datos de la imagen en el comentario de la célula. Estos son los escenarios:
- Si me quedo con el nombre de la imagen (nombre externo) y luego copiar y pegar la estructura en la misma hoja de cálculo se duplicará el nombre y la célula se apuntan a la misma estructura.
- Si sigo el nombre interno continuación, copiar y pegar a otra hoja de trabajo va a crear un problema como el mismo nombre interno puede existir en alguna otra hoja de cálculo en el mismo libro.
- Si tomo ID, no será capaz de obtener la imagen de referencia de ella
por conseguirme el nombre interno es importante. Tengo la referencia de forma, pero no tengo idea de cómo obtener el nombre interno de esta referencia.
1: "Si conoce el Índice de entonces se puede construir el 'Picture n' nombre alternativo" - esto no siempre puede ser cierto ya que si una imagen en el índice 2 se elimina de la colección de formas, podríamos tener "Imagen 3 "en el índice 2. No creo que el nombre interno se cambie para que coincida con el índice. – A9S6
Si agrego una Forma en VBA, el valor de retorno de Shapes.AddPicture (...) me dará la referencia para que no haya necesidad de hacer una Forma (Cuenta) aquí. Además, para un objeto recién creado, tanto el nombre interno como el nombre para mostrar serán los mismos, por lo que shape.Name funcionará en ese momento. El problema es cómo conseguir que el nombre interno utilizando la referencia de la forma en un momento posterior (usuario podría haber cambiado el nombre para mostrar) – A9S6
Si usted tiene una referencia válida para un objeto de forma Shape.name luego le dará su nombre externo. –