プロが教える店舗&オフィスのセキュリティ対策術

初心者の質問で申し訳ございません。

すでに作成されたパワーポイントの複数のテキストボックスの値を変更したいです。
例えば2ページあるスライドで各スライドに3つのテキストボックスがあり、
そこに入力された文字を変更したいと考えております。

スライド1 AAA → XXX
      BBB → YYY
      CCC → ZZZ

スライド2 AAA → 999  といった感じです。


お手数おかけしますが、よろしくお願いします。

A 回答 (3件)

こんばんは、



テキストボックスには、名前があり ホームタグの選択>>オブジェクトの選択と表示から確認できます。

単純にスライド1のテキストボックス名 テキスト ボックス 1への入力は
ActivePresentation.Slides(1).Shapes("テキスト ボックス 1").TextFrame.TextRange.Text = "テスト入力"
で入力可能と思います。

すべてのスライドに対してShapesを探す場合(オブジェクト名で)

Dim i As Integer  'iはスライド番号を入れる変数
  For i = 1 To ActivePresentation.Slides.Count
    For Each s In ActivePresentation.Slides(i).Shapes  '変数sにアクティブスライド番号のすべてのshapeオブジェクトを巡回して入れる。
    'メイン処理
    '色々考えられますが、例えば If やSelect Caseなどで
      Select Case s.Name
      Case "テキスト ボックス 1"
        s.TextFrame.TextRange.Text = "テスト入力"
      Case "テキスト ボックス 2"
        s.TextFrame.TextRange.Text = "テスト入力2"
      Case "テキスト ボックス 3"
        s.TextFrame.TextRange.Text = "テスト入力3"
      End Select
    Next
  Next

また、Shapesインデックスでも同様に処理が出来ると思います。

ご質問の場合、すでに入力されているテキストが明示されているので
それをキーにする場合、こんな感じで実行できるかと思いますが、
条件設定などの改修は必須になると思います。

Dim s As Shape        'sはshapeオブジェクトを入れる変数
Dim i As Integer       'iはスライド番号を入れる変数
  On Error Resume Next 'すべてのオブジェクトに対してなのでエラー対策
  For i = 1 To ActivePresentation.Slides.Count
    For Each s In ActivePresentation.Slides(i).Shapes
      Select Case s.TextFrame.TextRange.Text
      Case "AAA"
        If i = 1 Then s.TextFrame.TextRange.Text = "XXX"
        If i = 2 Then s.TextFrame.TextRange.Text = "999"
      Case "BBB"
        s.TextFrame.TextRange.Text = "YYY"
      Case "CCC"
        s.TextFrame.TextRange.Text = "ZZZ"
      End Select
    Next
  Next

注意:テキストボックスですね。
テキストボックス、オートシェイプなどの場合なら良いのですが、
スマートアートなどの場合書き方が変わります。
    • good
    • 4
この回答へのお礼

ご丁寧に教えていただきありがとうございました!
やりたいことはできました。

教えていただいた条件設定などを修正してみて、
条件処理もやってみます。

お礼日時:2020/08/03 08:17

なるほど初級者には勉強になります。



初級者なので考えすぎてしまい、てっきりテキスト形式のファイルなどに変換前と後の語句を書いておいて実行する際にはそれを基に色々と書き直すのかな?なんて
余計な事を考えてしまいました。
例えば『人名』『商品名』などと言った感じで。
やっぱ初級レベルではダメですねぇ。

オブジェクトの名前からってのも追加・削除によりどう変わるかへの対応が上手く書けなかったのですが、このようにすれば良かったのかぁ。
    • good
    • 0

何をもって置換前後の値を決めるのか?


スライド毎に『同じテキスト文字であれば、同じ文字列に置換する』ならまだ楽なように思います。(初級者的には)
ただスライドによって違うならそのルールはどうなっているのでしょうか?
単にこの程度の個数ではないのですよね?

パワポVBAは経験皆無ですけどね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A