三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。
Ken3三流君の連絡先:
[google formsで連絡する]
上記の問い合わせフォームに質問・感想など気軽に書き込んでください

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

実験動画 表示アウトラインでタイトルが表示されるのでタイトルを指定テキストにしたい パワポ マクロ

パワポで表示 アウトラインでタイトル部分がリンク表示されるので、変更したい
何言ってんだ?

キッカケ下記知恵袋の質問でアウトライン表示が気になったので触ってみた。
detail.chiebukuro.yahoo.co.jp

パワーポイントにタイトルを別テキストに設定する操作メニューが無かったので、
マクロでテキストボックスとタイトルを交換するイメージでやってみました。

www.youtube.com
https://www.youtube.com/live/E39o37zw-8c

00:00 1.表示 アウトライン
表示アウトラインでは、
タイトル(とプレースホルダ)が表示されます。
左側の表示だけじゃなく、入力もできます

06:16 2.左側の表示(タイトル)を変えたい
訳ありで、左側の表示を変えたいけど、
既にタイトルとして、スライドが作成されています。
そんな時、下記のマクロを使ってみてください。

操作手順
08:49 マクロのコピーと貼り付け
10:10 タイトルにしたい、テキストボックスを選択して、マクロを実行。

13:49 マクロの中身を説明する:

1.タイトルをコピー、複製を作り、位置をタイトルと同じにする
2.交換元テキストに対して
2.1 タイトルを移動
2.2 文字列を代入
2.3 書式を代入
2.4 交換元テキストボックスを消し、交換されたっぽく見せる
※既存のタイトルオブジェクトに代入して、指定したようにみせたただけ・・・

Sub タイトルの交換処理もどき231014()

    '選択をチェック
    If ActiveWindow.Selection.Type <> ppSelectionShapes Then  '種類の判断
        MsgBox "テキストボックスを選択してね", vbExclamation
        Exit Sub
    End If
    
    '現在スライドを保存
    Dim nPAGE As Integer
    nPAGE = ActiveWindow.Selection.SlideRange.SlideIndex '現在選択しているページ
    
    Dim objSlide As PowerPoint.Slide  'スライド
    Set objSlide = ActivePresentation.Slides(nPAGE) '↑現在のページを変数に

    '選択されたシェイプをまず変数に保存する※あとで入れ替えるので
    Dim 交換元Shape As PowerPoint.Shape  'シェイプ
    Set 交換元Shape = ActiveWindow.Selection.ShapeRange(1)
    
    'タイトルを細工したい※複製作成後、テキストボックスと入れ替えたい
    Dim objTITLE As PowerPoint.Shape  'タイトル シェイプ
    Set objTITLE = objSlide.Shapes.Title  'タイトルの代入
    objTITLE.Copy  'タイトルを複製したいのでコピーする
        
    Dim objShpRange As PowerPoint.ShapeRange
    Set objShpRange = objSlide.Shapes.Paste  '↑コピペ結果がShapeRangeで返る

    Dim objShp As PowerPoint.Shape  'コピー後のシェイプ
    Set objShp = objShpRange(1)     '一番目を代入
    objShp.Name = "コピー後タイトル" & objShp.Id  '新しい名前を付ける
    objShp.Left = objTITLE.Left  '位置をタイトルと同じ位置にする
    objShp.Top = objTITLE.Top

    '元テキストに対して 1タイトルを移動後、2文字列を代入、3書式を代入、4元テキストを消す
    With 交換元Shape
        '1タイトルを選択テキストの位置へ移動
        objTITLE.Left = .Left
        objTITLE.Top = .Top
        '2文字列を代入 タイトルの書き換え
        objTITLE.TextFrame.TextRange.Text = .TextFrame.TextRange.Text
        '3書式を代入
        .PickUp  '.PickUp で 書式コピー
        objTITLE.Apply  '書式貼付け
        '4元テキストのシェイプを消す
        .Delete   'シェイプの削除※これで、タイトルと交換した感じになる
    End With

    MsgBox "処理終了、アウトラインでタイトルを確認してください"

End Sub

処理の参考となれば、幸いです。

過去の関連動画:
.PickUp で 書式コピー, .Apply書式貼付け
ken3memo.hatenablog.com


質問・感想・クレームなど、
気軽にコメント欄に書いてもらえるとうれしいです。

[Googleフォームにコメントを残す]
↑質問・コメントの入力フォームです、気軽に書いてください


フッター:最後にKen3Videoの動画一覧を紹介します

YouTubeにアップした動画です。他の動画を一瞬でも見てもらえるとさらに嬉しいです。
再生リスト:[三流君Ken3の最新動画]←リストの一覧形式で表示する


また、ブログを見に来てくださいね。ではまたぁ~