Vba 按PPT幻灯片的ID或名称而不是编号导航到PPT幻灯片

Vba 按PPT幻灯片的ID或名称而不是编号导航到PPT幻灯片,vba,powerpoint,Vba,Powerpoint,ActivePresentation.SlideShowWindow.View.GotoSlide x要求我们输入幻灯片编号,该编号是可变的。如果我引用第3张幻灯片,然后移动第3张幻灯片的位置,代码将不再引用该幻灯片 如何通过引用SlideID或SlideName而不是幻灯片编号来克服此问题 谢谢。如果我正确理解了问题,您希望能够转到演示文稿中的特定幻灯片,而不管它可能出现在演示文稿中的什么位置(即,因为在它之前添加了其他幻灯片,或者它被移动到了不同的位置) 如果是这样,您可以使用幻灯片的sli

ActivePresentation.SlideShowWindow.View.GotoSlide x
要求我们输入幻灯片编号,该编号是可变的。如果我引用第3张幻灯片,然后移动第3张幻灯片的位置,代码将不再引用该幻灯片

如何通过引用SlideID或SlideName而不是幻灯片编号来克服此问题


谢谢。

如果我正确理解了问题,您希望能够转到演示文稿中的特定幻灯片,而不管它可能出现在演示文稿中的什么位置(即,因为在它之前添加了其他幻灯片,或者它被移动到了不同的位置)

如果是这样,您可以使用幻灯片的slided标记演示文稿:

ActivePresentation.Tags.Add "IndexSlide", Cstr(lSlideID)
(其中indexlide是您为幻灯片指定的任何方便的名称;对于要跟踪的不同幻灯片,您可以有多个标记。当然,lSlideID是幻灯片的SlideID

您需要编写一个函数来检索幻灯片的SlideIndex,给定SlideID并这样调用它(aircode…您可能需要移动/删除一两个参数):

这将从演示文稿中获取名为indexlide的标记,它是indexlide的SlideID,将其转换为Long(标记是字符串),将其传递给SlideIndexFromSlideID函数,该函数返回幻灯片的当前SlideIndex…供您使用

[稍后:添加返回SlideIndex所需的函数]

Function SlideIndexFromSlideID(lSlideID As Long) As Long

  SlideIndexFromSlideID = ActivePresentation.Slides.FindBySlideID(lSlideID).SlideIndex

End Function

如果我正确理解了问题,您希望能够转到演示文稿中的特定幻灯片,而不管它可能出现在演示文稿中的什么位置(即,因为在它之前添加了其他幻灯片,或者它被移动到了不同的位置)

如果是这样,您可以使用幻灯片的slided标记演示文稿:

ActivePresentation.Tags.Add "IndexSlide", Cstr(lSlideID)
(其中indexlide是您为幻灯片指定的任何方便的名称;对于要跟踪的不同幻灯片,您可以有多个标记。当然,lSlideID是幻灯片的SlideID

您需要编写一个函数来检索幻灯片的SlideIndex,给定SlideID并这样调用它(aircode…您可能需要移动/删除一两个参数):

这将从演示文稿中获取名为indexlide的标记,它是indexlide的SlideID,将其转换为Long(标记是字符串),将其传递给SlideIndexFromSlideID函数,该函数返回幻灯片的当前SlideIndex…供您使用

[稍后:添加返回SlideIndex所需的函数]

Function SlideIndexFromSlideID(lSlideID As Long) As Long

  SlideIndexFromSlideID = ActivePresentation.Slides.FindBySlideID(lSlideID).SlideIndex

End Function