我正在尝试创建一个自定义 Powerpoint 工具栏,它会生成一个有用布局的工具栏,当我遇到它们时,我将其保存在“templates.pptx”甲板中。
templates.pptx 中有一系列部分,我将幻灯片添加到各个部分中。我希望 VBA 能够:
加载时处理菜单调用
getProcessContent
:
Sub getProcessContent()
Dim xml As String
xml = generateXML(1)
MsgBox (xml)
getProcessContent = xml
End Sub
这会调用一个通用的生成 XML 函数,该函数采用部分 ID 参数
Function generateXML(sectionId)
Dim template As presentation
Dim path As String
Dim xml As String
Dim sectionName As String
Dim Slide As Integer
Dim slideObj As Slide
Dim slideTitle As String
'Load template layouts
'path = AddIns("km_ppt_toolbar").path
path = "[HIDDEN]\ppt toolbar\v2"
Set template = Presentations.Open(path & "\templates.pptx")
'Generate blank XML string
xml = ""
FirstSlide = template.SectionProperties.FirstSlide(sectionId)
Lastslide = (FirstSlide + template.SectionProperties.SlidesCount(sectionId) - 1)
For Slide = FirstSlide To Lastslide
' Add a button for each slide
Set slideObj = template.Slides(Slide)
slideTitle = slideObj.Shapes.Title.TextFrame.TextRange.Text
slideXML = "<button id=""" & slide & """ label=""" & slideTitle & """ imageMso=""HappyFace"" size=""normal"" onAction=""InsertSlide " & slide & """ />"
xml = xml & slideXML
Next Slide
presentation.Close
generateXML = xml
End Function
当我运行
getProcessContent
子程序时,For 循环中的第一张幻灯片出现运行时错误,突出显示 slideObj = presentation.Slides(Slide)
行,显示“对象不支持此属性或方法”
您收到的“对象不支持此属性或方法”错误表明您的代码的presentation.Slides(Slide) 部分存在问题。当尝试从演示文稿对象访问幻灯片时,您可能没有定义名为演示文稿的变量。相反,您应该从您定义的模板访问幻灯片。
Function generateXML(sectionId)
Dim template As Presentation
Dim path As String
Dim xml As String
Dim sectionName As String
Dim Slide As Integer
Dim slideObj As Slide
Dim slideTitle As String
'path = AddIns("km_ppt_toolbar").path
path = "[HIDDEN]\ppt toolbar\v2"
Set template = Presentations.Open(path & "\templates.pptx")
xml = ""
FirstSlide = template.SectionProperties.FirstSlide(sectionId)
LastSlide = (FirstSlide + template.SectionProperties.SlidesCount(sectionId) - 1)
For Slide = FirstSlide To LastSlide
Set slideObj = template.Slides(Slide)
slideTitle = slideObj.Shapes.Title.TextFrame.TextRange.Text
slideXML = "<button id=""" & Slide & """ label=""" & slideTitle & """ imageMso=""HappyFace"" size=""normal"" onAction=""InsertSlide " & Slide & """ />"
xml = xml & slideXML
Next Slide
template.Close
generateXML = xml
结束功能
我将变量名称更新为lastslide