Когда изображение вставлено в рабочий лист Excel с использованием метода Shapes.AddPicture (...), Excel автоматически выдаст ему имя «Picture 1», «Picture 2» и т. Д.Как получить внутреннее имя Shape в Excel
Это имя можно использовать для получения ссылки на этот объект фигуры в коллекции Shapes, например Shapes.Item («Изображение 1»). Если имя изменено в Excel с помощью поля имени, существуют два разных имени (или один из них - это ключ/подпись), через которые можно ссылаться на объект Shape. Так что, если изменить имя «MyPic» Я могу использовать любого из них, чтобы ссылаться на форме в коллекции Shapes:
Shapes.Item("Picture 1")
OR
Shapes.Item("MyPic")
Имя можно получить с помощью Shape.Name свойства в VBA, но как мы можем получить доступ к другим значение (MyPic), которое, кажется, не изменяется внутри?
ОБНОВЛЕНО
То, что я пытаюсь сделать, это связать ячейку с изображением в Excel. Я сохраняю данные изображения в комментарии ячейки. Эти сценарии:
- Если я держать имя снимки (внешнее имя), а затем скопировать вставить структуру на тот же лист будет дублировать название и ячейка будет указывать на ту же структуру.
- Если я сохраняю внутреннее имя, тогда копирование на другой рабочий лист создаст проблему, так как одно и то же внутреннее имя может существовать на каком-либо другом листе в той же книге.
- Если я ID, я не буду иметь возможность получить ссылку из них картину
Для меня становится внутреннее имя важно. У меня есть ссылка на Shape, но я не знаю, как получить внутреннее имя из этой ссылки.
+1: «Если вы знаете индекс, вы можете создать альтернативное имя« Picture n »- это может не всегда быть истинным, потому что если изображение из индекса 2 будет удалено из коллекции Shapes, у нас может быть« Изображение » 3 "в индексе 2. Я не думаю, что внутреннее имя будет изменено в соответствии с индексом. – A9S6
Если я добавлю форму в VBA, возвращаемое значение из Shapes.AddPicture (...) даст мне ссылку на нее, поэтому здесь нет необходимости делать фигуры (граф). Кроме того, для вновь созданного объекта и внутренние, и отображаемые имена будут одинаковыми, так что в это время будет создано имя shape.Name. Проблема заключается в том, как получить это внутреннее имя с помощью ссылки Shape позже (пользователь мог изменить отображаемое имя) – A9S6
Если у вас есть действительная ссылка на объект фигуры, тогда Shape.name даст вам свое внешнее имя. –