Номер индекса только что вставленной графики

#excel #vba #powerpoint

#excel #vba #powerpoint

Вопрос:

Я хочу вставить что-то в PPT (на слайд, на котором уже есть объекты), а затем изменить его размер. В следующем коде в строке 1 я вставляю диапазон на ранее выбранный слайд. После этого я хочу установить переменную shp в качестве формы, а затем изменить ее на .top .width и т.д. Моя проблема в том, что (2) в последней строке должно быть номером индекса фигуры, которую я только что вставил. Как мне это сделать?

 slde.Shapes.PasteSpecial 2


Set shp = slde.Shapes(2)
  

Ответ №1:

Вы могли бы использовать фигуры.Подсчитайте свойство следующим образом:

 Dim sld As Slide
Dim shp As Shape
    
sld.Shapes.PasteSpecial ppPasteDefault
Set shp = sld.Shapes(sld.Shapes.Count)
  

Ответ №2:

Работа с объектами. Таким образом, вам не придется беспокоиться о поиске нужного объекта. Вот пример

 Dim shp As Object

Set shp = sld.Shapes.PasteSpecial(2)

Debug.Print shp.Name

With shp
    '~~> Do what you want here
End With
  

СОВЕТ:

Попробуйте и не работайте с прямыми постоянными значениями…

Если вы используете раннюю привязку, измените

 Set shp = sld.Shapes.PasteSpecial(2)
  

Для

 Set shp = sld.Shapes.PasteSpecial(ppPasteEnhancedMetafile)
  

Для поздней привязки объявите это вверху

 Const ppPasteEnhancedMetafile As Integer = 2
  

а затем используйте

 Set shp = sld.Shapes.PasteSpecial(ppPasteEnhancedMetafile)
  

Таким образом, даже если вы прочитаете код, скажем, через 6 месяцев, вы будете знать, что делает этот код. (Только мои два цента)