2016-04-18 9 views
0

My PowerPointスライドには、「プロファイルの説明」などのデフォルトのテキストを含むテキストボックスがあり、クリックすると「プロファイルの説明」という単語が消えて入力できますプロフィール。パワーポイントvba形状のデフォルトテキストを取得

の内容を参照して、デフォルトのテキスト「プロファイルの説明」を含む特定のテキストボックスを探したいのですが、の内容(タイトルは使用できません。それはその上をスライドする)。

Slide.TextFrame.TextRangeを使用して、このテキストの他の多くのプロパティを見つけることができますが、そのデフォルトテキストを取得する方法を理解できません。

ボックス内をクリックしてテキストを入力すると、Slide.TextFrame.TextRange.Textを使用して新しい値にアクセスできますが、デフォルトのテキストが必要です。私は多量のドキュメンテーションを見てきましたが、私はどこかでそれを見逃していると思います。正しい方向に私を指差してください。ありがとう。

答えて

1

このテキストボックスは、プレースホルダから作成されますか?その場合は、スライドに関連付けられたカスタムレイアウト上の親プレースホルダを参照する必要があります。これは、スライドとレイアウトの間のコレクションインデックスの違いと、スライドごとにNameプロパティが変更されるためですマスターから生成されます。例:これはカスタムレイアウト上のテキストを動的にスライドにパワーポイントで置き換えられるビルトインプレースホルダ用のカスタムテキストプレースホルダのために動作しなくなること

oSld.CustomLayout.Shapes.Placeholders(index).TextFrame2.TextRange.Text 

注意。

例:

スライドマスター/レイアウト/タイトルプレースホルダ:「マスタータイトルのスタイルを編集するときにクリックし、」

スライドプレースホルダ:あなたはへの参照を取得することができ

を「タイトルを追加します」タグを使用してレイアウト上に配置します。タグは、プレゼンテーション、スライド、または図形に追加できる不可視のメタデータです。

' ************************************************************************************* 
' Purpose : Returns a presentation, slide or shape by its tag from a collection of 
'   presentations, slides or shapes 
' Author : Jamie Garroch of YOUpresent.co.uk 
' Inputs : TagObject - collection type to be searched. Presentations, Slides or Shapes 
'   TagName - The tag name to search for (always upper case) 
'   TagValue - The tag value to search for 
' Outputs : Returns a Presentation, Slide or Shape object if a match is found 
' ************************************************************************************* 
Public Function GetByTag(TagObject, TagName As String, TagValue As String) As Object 
    On Error GoTo errhandler 
    Select Case True 
    Case TypeOf TagObject Is Presentations 
     Dim oPres As Presentation 
     For Each oPres In TagObject 
     If TagExists(oPres, TagName, TagValue, True) Then Set GetByTag = oPres: Exit Function 
     Next 
    Case TypeOf TagObject Is Slides 
     Dim oSld As Slide 
     For Each oSld In TagObject 
     If TagExists(oSld, TagName, TagValue, True) Then Set GetByTag = oSld: Exit Function 
     Next 
    Case TypeOf TagObject Is Shapes 
     Dim oShp As Shape 
     For Each oShp In TagObject 
     If TagExists(oShp, TagName, TagValue, True) Then Set GetByTag = oShp: Exit Function 
     Next 
    End Select 
Exit Function 

errhandler: あなたは、このようにそのタグによって形状を返すように関数を記述

ActivePresentation.Slides(1).Shapes(1).Tags.Add myName, myValue 

これは、あなたがスライド上形状にタグを追加する方法ですDebugMsg "GetByTag Error:" & Err & "" & Err.Description エンド機能

+0

ありがとう、ジェイミー。私は、代わりにテキストボックスのx、y座標を代わりに使うかもしれないと思う。私はそれが簡単にアクセスし、より堅牢になると思います。 – lkb3

+0

"最も堅牢な"方法は、テキストボックスにタグを追加し、タグ付きの図形への参照を取得することです。 –

+0

どのように?私はこれに慣れていない。私は過去数日間にこれを実装しようとしていましたが、私は目立ちました。タグは形状の固有のプロパティですか? – lkb3

1

私はこの作業をTagsで行う方法を見つけようとしていましたが、できませんでした。

代わりに、私の解決策は、プレースホルダのCustomLayoutを事前にチェックして、デフォルトのx、y座標と値をメモしておくことでした。

ページが生成されたら、x、y座標で図形を見直し、一致するものがあればデフォルト値に置き換えます。

関連する問題