三流君 ken3のmemo置き場

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

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答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

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)