2017-01-22 36 views
0

我有一個工作分配,當將文件保存到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

您將需要使用PowerPoint [應用程序事件](https://msdn.microsoft.com/en-us/library/辦公室/ ff746876(v = office.14)的.aspx)。確保你閱讀[this](https://msdn.microsoft.com/en-us/library/office/ff746018(v = office.14).aspx)。 – PatricK

回答

1

在PowerPoint OM(對象模型)中內置了幾個文件屬性。在將.FullName屬性寫入文本框的行中,您可以將文本設置爲所需的內容。一旦

?ActivePresentation. 

您鍵入點,屬性和方法將是一個列表:

找物業,在立即窗口中鍵入此(按Ctrl + G,如果它是不可見)由IntelliSense顯示。你會看到.Name和.Path。試試看看格式是否是你需要的。如果不是,則需要通過更改.FullName行,在寫入文本框之前獲取最接近所需內容的字符串並修改字符串。

關於更新,VBA是一個事件驅動的環境,這意味着您的宏需求和事件觸發,以便它被告知運行。這可以像用戶按Alt + F8並選擇要運行的宏一樣簡單。如果您希望宏自動運行事件「保存文件」,則需要使用類模塊和初始化過程在PowerPoint中設置應用程序事件。谷歌「PowerPoint應用程序事件」找出如何做到這一點。

最後,將相同的對象添加到多個幻燈片最好使用幻燈片母版,您可以在一個位置而不是每個幻燈片中完成。這樣,您的代碼可以被簡化,並且用戶不會意外(或故意)修改您的特殊頁腳文本框。你可以發現,這裏的(假設你的模板只有一個幻燈片母版):

ActivePresentation.Designs(1).SlideMaster 
相關問題