保存时将文件路径更新为页脚

时间:2017-01-22 23:09:13

标签: vba powerpoint powerpoint-vba

我有一项工作分配,当将文件保存到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

1 个答案:

答案 0 :(得分:1)

PowerPoint OM(对象模型)中内置了几个文件属性。在将.FullName属性写入文本框的行中,您可以将文本设置为您需要的文本。

要查找属性,请在“立即”窗口中键入此属性(如果不可见,请按Ctrl + G):

?ActivePresentation.

只要您键入点,IntelliSense就会显示属性和方法列表。你会看到.Name和.Path。试试它们,看看格式是否符合你的需要。如果没有,您需要获得最接近您想要的那个并修改字符串,然后通过更改.FullName行来写入文本框。

关于更新,VBA是一个事件驱动的环境,这意味着您需要触发宏需求和事件,以便让它被告知运行。这可以像用户按Alt + F8并选择要运行的宏一样简单。如果您希望宏自动在事件“保存文件”上运行,那么您需要在PowerPoint中使用类模块和初始化过程设置应用程序事件。谷歌“PowerPoint应用程序事件”,以了解如何做到这一点。

最后,将相同的对象添加到多张幻灯片最好使用幻灯片母版,您可以在一个位置而不是每张幻灯片中完成。这样,您的代码可以简化,用户不会意外(或故意)修改您的特殊页脚文本框。你可以在这里找到(假设你的模板只有一个幻灯片母版):

ActivePresentation.Designs(1).SlideMaster