2017-01-22 9 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/)を使用する必要があります。 office/ff746876(v = office.14).aspx)。 [this](https://msdn.microsoft.com/en-us/library/office/ff746018(v = office.14).aspx)を必ずお読みください。 – PatricK

答えて

1

PowerPoint OM(オブジェクトモデル)にはいくつかのファイルプロパティが組み込まれています。 .FullNameプロパティがテキストボックスに書き込まれている行では、テキストを必要なものに設定できます。

、プロパティを見つける(それが表示されていない場合はCtrl + G)イミディエイトウィンドウでこれを入力するには、次のとすぐにドットを入力するよう

?ActivePresentation. 

、プロパティとメソッドの一覧は次のようになりますIntelliSenseによって表示されます。 .Nameと.Pathが表示されます。それらを試して、フォーマットが必要なものかどうかを確認してください。そうでなければ、.FullName行を変更してテキストボックスに書き込む前に、必要なものに最も近いものを取得し、文字列を変更する必要があります。

VBAはイベント駆動型の環境で、実行するようにマクロのニーズとイベントを発生させます。これは、ユーザーがAlt + F8を押して実行するマクロを選択するだけの簡単な操作です。 「ファイルを保存」イベントでマクロを自動的に実行させるには、クラスモジュールと初期化プロシージャを使用してPowerPointでアプリケーションイベントを設定する必要があります。 Googleの "PowerPointアプリケーションイベント"を参照してください。

最後に、複数のスライドに同じオブジェクトを追加するのは、すべてのスライドではなく1か所で行うことができるスライドマスターを使用するのが最適です。そうすれば、コードを単純化することができ、ユーザーは特別なフッターテキストボックスを誤って(または意図的に)変更することができなくなります。

ActivePresentation.Designs(1).SlideMaster 
関連する問題