虽然我意识到SlideMaster在给定的演示文稿中有一个唯一的名称(虽然我知道这是错误的),有没有办法唯一地识别用户无法触及的母版?或者,是否有一个等同于Slide的标签集合,在某个地方我可以存储我自己的ID?
对于PowerPoint 2003和/或2007 ...提前致谢。
答案 0 :(得分:0)
在PowerPoint 2007/2010中,您可以使用CustomXMLParts
作为标记的种类。这是一个演示:
Sub SetSlideMasterTag()
Dim ap As Presentation
Set ap = ActivePresentation
''#------------------------
Dim slideMasterCustomerData As CustomerData
Set slideMasterCustomerData = ap.SlideMaster.CustomerData
''#------------------------
Dim slideMasterCustomXMLPart As CustomXMLPart
Set slideMasterCustomXMLPart = slideMasterCustomerData.Add
slideMasterCustomXMLPart.LoadXML ("<Tag><Item>SlideMaster</Item></Tag>")
''#------------------------
Dim slideMasterTag As String
slideMasterTag = slideMasterCustomXMLPart.Id
''#------------------------
Debug.Print slideMasterTag
Debug.Print ap.CustomXMLParts.SelectByID(slideMasterTag).XML
''#------------------------
ap.CustomDocumentProperties.Add Name:="SlideMasterTag", LinkToContent:=False, _
Type:=msoPropertyTypeString, Value:=slideMasterTag
End Sub
Sub RetrieveSlideMasterTag()
Dim ap As Presentation
Set ap = ActivePresentation
''#------------------------
Dim slideMasterTag As String
slideMasterTag = ap.CustomDocumentProperties.Item("SlideMasterTag").Value
Debug.Print slideMasterTag
''# Is this the right slide master?
If Not ap.SlideMaster.CustomerData(slideMasterTag) Is Nothing Then
Debug.Print "Found you, you little bugger!"
End If
End Sub
要记住几件事:
slideMasterTag
。
可能最好的地方是这样做
在CustomDocumentProperties
中,
因此RetrieveSlideMasterTag
常规。这是不太可能的
最终用户会进入这里。
CustomDocumentProperties
,你愿意
只需要查询所有
CustomXMLParts
使用XPath为您的
XML。slideMasterTag
。答案 1 :(得分:0)
我最初认为没有好的方法来保护用户的SlideMaster名称,因为它似乎很容易通过主视图提供。在2007年,这很容易实现,如上所示:功能区的“视图”选项卡,“幻灯片母版”按钮,右键单击任何母版,然后重命名。在2003年几乎相同,查看菜单&gt;主人&gt;单击幻灯片母版,右键单击左侧缩略图列表中的相关母版,重命名。
幸运的是,这并没有重命名 master ,而是重命名 design 。当涉及到这两个对象时,Ppt对象模型并不是非常简单;每个主人显然都是设计的父母,但是出于所有意图和目的,他们被一对一地使用,并且每个人都将另一个作为财产公开:SlideMaster.Design
(仅适用于“活跃”幻灯片母版)或Design.SlideMaster
(至少就幻灯片主人而言 - 我不与其他三人合作,所以不能在这里真正与他们交谈)。当用户按照上面详述的一系列步骤操作时,等效的vba为myDesign.Name = "SomeNewName"
,而不是mySlideMaster.Name = "SomeNewName"
。主人的名字不受影响;同样,如果在VBA中我执行mySlideMaster.Name = "SomeNewVBAName"
,用户可能选择的相应设计名称保持不变。