Я работаю над интерактивной презентацией Powerpoint, где пользователь нажимает на миниатюру фотографии и может просматривать ее почти на весь экран. У меня трудности с методами .Shapes и .Slides.
Я хочу, чтобы несколько небольших изображений отображались на одном слайде в презентации. Если пользователь хочет увидеть его очень большим, ему просто нужно нажать на изображение. Затем я хотел бы, чтобы изображение появилось на его новом сгенерированном слайде, настолько большом, насколько оно может поместиться на этом слайде. Когда они нажимают на большее изображение, они возвращаются к меньшему слайду изображений, который они просматривали. Этого достаточно легко добиться, создав отдельный слайд полноразмерного изображения для каждого маленького изображения в шоу и просто вызывая большой номер слайда при нажатии на маленькое изображение; однако это отнимает много времени и делает презентацию намного больше, чем нужно. Если пользователь никогда не нажимает, чтобы увидеть увеличенное изображение, то страница с большим изображением занимает место. Я решил выполнить код VBA при нажатии на изображение, которое должно:
скопировать изображение
создать новый слайд после последнего слайда в презентации
вставить изображение в новый слайд
- изменить размер изображения настолько большим, насколько оно может уместиться на экране
- просмотреть новый слайд с увеличенным изображением
- отправить пользователя обратно на слайд
они начали.
Код:
Sub ViewFullSize()
Dim pptNewSlide As Slide
' Dim objCurrentSlideIndex As Integer
' objCurrentSlideIndex = ActiveWindow.Selection.SlideRange.SlideIndex
With ActivePresentation
.Slides(2).Shapes("Picture 7").Copy
.Slides(4).Shapes.Paste
End With
Set pptNewSlide = ActivePresentation.Slides.Add(ActivePresentation.Slides.Count + 1, ppLayoutCustom)
ActivePresentation.SlideShowWindow.view.Last
End Sub
Этот код выполняется и выполняет то, что ожидается. Моя проблема в том, что мне нужно, чтобы номера слайдов и номера фигур были переменными. Я не хочу переписывать этот фрагмент кода для сотен фотографий, на которые можно нажать. Я пытался сделать текущий слайд переменной как это:
Dim objCurrentSlideIndex As Integer
objCurrentSlideIndex = ActiveWindow.Selection.SlideRange.SlideIndex
With ActivePresentation
.Slides(objCurrentSlideIndex).Shapes("Picture 7").Copy
.Slides(4).Shapes.Paste`
End With
Переменная, которую я пробовал .Slides(objCurrentSlideIndex)
, приводит к тому, что вся подпрограмма не выполняется, но не приводит к аварийному завершению слайд-шоу. Я использовал Set
и множество других синтаксисов и не могу заставить его использовать переменную вместо простого числа. Есть ли способ сделать это? Могут ли методы .Slides()
и .Shapes()
использовать переменные? Я прочитал несколько страниц Microsoft и PPTools, но не могу найти примеров использования переменных.