前提・実現したいこと
大量のPowerPointのファイルのすべてのページに、「ファイルごとの固有名 P.◯」というノンブルを入れなければなりません。
最初、「A:固有名を変数に入れて、所定の位置にテキストボックスをペースト、その中身を変数&スライド.Countに書き換える」「AをFor eachを使ってすべてのファイル、すべてのスライドで行う」という方法で対処していました。
しかし、相手先から「こちらでページを増減しても自動でノンブルが入るようにして欲しい」と要望がありました。そのため、「B:スライドマスタに固有名&スライド番号を入れる」「BをFor eachを使ってすべてのファイルで行う」に変更したいと考えました。
発生している問題・エラーメッセージ
同じようにテキストボックスをペーストして、中身を書き換えようとしたのですが、スライドマスタで「スライド番号」を表す「<#>」というフィールドをテキストボックスに入れる方法と、フィールドと「"ファイルごとの固有名 P."」という文字列を連結する方法が見つけられませんでした。
知識不足もあり、他の方法が思いつかなかったのでこのようにしましたが、**「大量のファイルのスライドマスタに「ファイルごとの固有名 P.◯」を入れる__**__ことが出来れば他の方法でも全然構いません。アドバイスお願いします。
該当のソースコード
VBA
1Sub スライドマスタにノンブル() 2 Dim shp As Shape 3 Dim non As String 4 Dim newshp As ShapeRange '貼り付けたものはshaperangeになるので 5 6'1ページ目の"スライド番号"から始まるテキストボックスに固有名が入っているので 7'それを取得しています 8 For Each shp In ActivePresentation.Slides(1).Shapes 9 If Left(shp.Name, 6) = "スライド番号" Then 10 non = shp.TextFrame.TextRange.Text 11 non = Replace(non, "P1", "P") '1を削除 12 shp.TextFrame.TextRange.Text = non 13 shp.Copy'テキストボックスコピー 14 End If 15 Next 16 17 With ActivePresentation.SlideMaster 18 ActiveWindow.ViewType = ppViewSlideMaster'スライドマスタに切り替え 19 .Shapes.SelectAll 'スライドマスタのシェイプ全選択 20 ActiveWindow.Selection.Delete '消す 21 Set newshp = .Shapes.Paste'さっきコピーしたものを貼り付け 22 23'.HeadersFooters.SlideNumber.Textというものを見つけたので 24'入れてみましたがエラーが出ます。また、これはフィールドではないようです 25 non = non & .HeadersFooters.SlideNumber.Text 26 27 newshp.TextFrame.TextRange.Text = non 28 End With 29 30 31End Sub
試したこと
non = non & .HeadersFooters.SlideNumber.Textを
non = non & <#>としてみましたが、<#>がそのまま表示されてしまいました。
補足情報(FW/ツールのバージョンなど)
PowerPoint
Office365
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/05 04:09
2020/02/05 11:23
2020/02/06 12:12