我有一项工作分配,当将文件保存到d:\ documents \这样的特定位置时,文件路径会显示在页脚中。我找到的代码只显示名称,而不是文件路径,但是当我再次保存时,名称没有更新。
这是代码。
Sub AddTextBoxDateFilename() ' Adds a text box with date and filename to each slide ' You must first save the presentation at least once before using this
Dim oSl As Slide
Dim oSh As Shape
On Error GoTo ErrorHandler
For Each oSl In ActivePresentation.Slides ' do we already have a filename/date text box? If do, use it: On Error Resume Next Set oSh = oSl.Shapes("FilenameAndDate") On Error GoTo ErrorHandler
If oSh Is Nothing Then ' no text box there already, create one
' change the position and formatting to suit your needs:
Set oSh = oSl.Shapes.AddTextbox(msoTextOrientationHorizontal, 0, 510, 720, 28.875)
With oSh
.Name = "FilenameAndDate"
.TextFrame.WordWrap = msoTrue
With .TextFrame.TextRange.ParagraphFormat
.LineRuleWithin = msoTrue
.SpaceWithin = 1
.LineRuleBefore = msoTrue
.SpaceBefore = 0.5
.LineRuleAfter = msoTrue
.SpaceAfter = 0
End With
With .TextFrame.TextRange.Font
.NameAscii = "Arial"
.Size = 18
.Bold = msoFalse
.Italic = msoFalse
.Underline = msoFalse
.Shadow = msoFalse
.Emboss = msoFalse
.BaselineOffset = 0
.AutorotateNumbers = msoFalse
.Color.SchemeColor = ppForeground
End With
End With ' shape
End If ' osh is nothing
' now we know there's a shape by the correct name so
Set oSh = oSl.Shapes("FilenameAndDate")
With oSh.TextFrame.TextRange
.Text = ActivePresentation.FullName & vbTab
End With
Set oSh = Nothing
Next ' slide
NormalExit:
Exit Sub
ErrorHandler:
MsgBox ("There was a problem:" & vbCrLf & Err.Description)
Resume NormalExit
End Sub
答案 0 :(得分:1)
PowerPoint OM(对象模型)中内置了几个文件属性。在将.FullName属性写入文本框的行中,您可以将文本设置为您需要的文本。
要查找属性,请在“立即”窗口中键入此属性(如果不可见,请按Ctrl + G):
?ActivePresentation.
只要您键入点,IntelliSense就会显示属性和方法列表。你会看到.Name和.Path。试试它们,看看格式是否符合你的需要。如果没有,您需要获得最接近您想要的那个并修改字符串,然后通过更改.FullName行来写入文本框。
关于更新,VBA是一个事件驱动的环境,这意味着您需要触发宏需求和事件,以便让它被告知运行。这可以像用户按Alt + F8并选择要运行的宏一样简单。如果您希望宏自动在事件“保存文件”上运行,那么您需要在PowerPoint中使用类模块和初始化过程设置应用程序事件。谷歌“PowerPoint应用程序事件”,以了解如何做到这一点。
最后,将相同的对象添加到多张幻灯片最好使用幻灯片母版,您可以在一个位置而不是每张幻灯片中完成。这样,您的代码可以简化,用户不会意外(或故意)修改您的特殊页脚文本框。你可以在这里找到(假设你的模板只有一个幻灯片母版):
ActivePresentation.Designs(1).SlideMaster