Power Pointで、マクロ(VBA)によって、

スライドの全図形中のテキストの
「りんご」を「みかん」に置換したいのですが、
参考になりそうなサンプルコードか、解説が載っているページを教えていただけないでしょうか。

なお http://q.hatena.ne.jp/1104101386 は見ています。よろしくお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2006/09/06 11:26:50
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:aiaina No.1

回答回数8179ベストアンサー獲得回数131

ポイント60pt

http://oshiete1.goo.ne.jp/kotaeru.php3?q=71326

御参考にどうぞ^-^

id:lionfan

aiaina様

お教えいただいたサイトを参考に、

Replaceメソッドのヘルプを引いてみたところ、

みごと解決しました。

今後の方のために、コピペさせていただきます。

aiaina様、ありがとうございました。大感謝です。




Replace メソッド

関連項目対象使用例アプリケーション情報TextRange オブジェクトの Replace メソッド

指定したテキスト範囲から置き換える文字列を検索し、指定した文字列に置き換え、最初に見つかったテキストを表す TextRange オブジェクトを返します。一致するものが見つからない場合は、Nothing を返します。

expression.Replace(FindWhat, ReplaceWhat, After, MatchCase, WholeWords)

expression 必ず指定します。対象となるオブジェクトへの参照を返すオブジェクト式を指定します。

FindWhat 必ず指定します。文字列型 (String) の値を指定します。検索するテキストを指定します。

ReplaceWhat 必ず指定します。文字列型 (String) の値を指定します。置き換えるテキストを指定します。

After 省略可能です。長整数型 (Long) の値を指定します。引数 FindWhat の内容を指定したテキスト範囲のどこから検索するか、その文字の位置を指定します。たとえば、テキスト範囲の 4 番目の文字から検索するには、引数 After には 4 を指定します。この引数を省略すると、テキスト範囲の先頭から検索を開始します。

MatchCase 省略可能です。MsoTriState クラスの定数を使用します。大文字小文字を区別するかどうかを指定します。

使用できる定数は、次に示す MsoTriState クラスの定数のいずれかです。

msoCTrue

msoFalse (既定値)

msoTriStateMixed

msoTriStateToggle

msoTrue 大文字小文字を区別します。

WholeWords 省略可能です。MsoTriState クラスの定数を使用します。完全に一致する単語だけを検索するかどうか指定します。

使用できる定数は、次に示す MsoTriState クラスの定数のいずれかです。

msoCTrue

msoFalse (既定値)

msoTriStateMixed

msoTriStateToggle

msoTrue 単語の一部ではなく、完全に一致する単語を検索します。

Fonts オブジェクトの Replace メソッド

Fonts コレクションのフォントを置き換えます。

expression.Replace(Original, Replacement)

expression 必ず指定します。対象となるオブジェクトへの参照を返すオブジェクト式を指定します。

Original 必ず指定します。文字列型 (String) の値を指定します。置き換えるフォントの名前を指定します。

Replacement 必ず指定します。文字列型 (String) の値を指定します。置換フォントの名前を指定します。

使用例

TextRange オブジェクトの場合

次の使用例は、作業中のプレゼンテーションのすべての図形で、"like" と完全に一致するすべての単語を "NOT LIKE" に置き換えます。

Sub ReplaceText()

Dim oSld As Slide

Dim oShp As Shape

Dim oTxtRng As TextRange

Dim oTmpRng As TextRange

Set oSld = Application.ActivePresentation.Slides(1)

For Each oShp In oSld.Shapes

Set oTxtRng = oShp.TextFrame.TextRange

Set oTmpRng = oTxtRng.Replace(FindWhat:="like", _

Replacewhat:="NOT LIKE", WholeWords:=True)

Do While Not oTmpRng Is Nothing

Set oTxtRng = oTxtRng.Characters(oTmpRng.Start + oTmpRng.Length, _

oTxtRng.Length)

Set oTmpRng = oTxtRng.Replace(FindWhat:="like", _

Replacewhat:="NOT LIKE", WholeWords:=True)

Loop

Next oShp

End Sub

2006/09/06 11:26:19

その他の回答1件)

id:aiaina No.1

回答回数8179ベストアンサー獲得回数131ここでベストアンサー

ポイント60pt

http://oshiete1.goo.ne.jp/kotaeru.php3?q=71326

御参考にどうぞ^-^

id:lionfan

aiaina様

お教えいただいたサイトを参考に、

Replaceメソッドのヘルプを引いてみたところ、

みごと解決しました。

今後の方のために、コピペさせていただきます。

aiaina様、ありがとうございました。大感謝です。




Replace メソッド

関連項目対象使用例アプリケーション情報TextRange オブジェクトの Replace メソッド

指定したテキスト範囲から置き換える文字列を検索し、指定した文字列に置き換え、最初に見つかったテキストを表す TextRange オブジェクトを返します。一致するものが見つからない場合は、Nothing を返します。

expression.Replace(FindWhat, ReplaceWhat, After, MatchCase, WholeWords)

expression 必ず指定します。対象となるオブジェクトへの参照を返すオブジェクト式を指定します。

FindWhat 必ず指定します。文字列型 (String) の値を指定します。検索するテキストを指定します。

ReplaceWhat 必ず指定します。文字列型 (String) の値を指定します。置き換えるテキストを指定します。

After 省略可能です。長整数型 (Long) の値を指定します。引数 FindWhat の内容を指定したテキスト範囲のどこから検索するか、その文字の位置を指定します。たとえば、テキスト範囲の 4 番目の文字から検索するには、引数 After には 4 を指定します。この引数を省略すると、テキスト範囲の先頭から検索を開始します。

MatchCase 省略可能です。MsoTriState クラスの定数を使用します。大文字小文字を区別するかどうかを指定します。

使用できる定数は、次に示す MsoTriState クラスの定数のいずれかです。

msoCTrue

msoFalse (既定値)

msoTriStateMixed

msoTriStateToggle

msoTrue 大文字小文字を区別します。

WholeWords 省略可能です。MsoTriState クラスの定数を使用します。完全に一致する単語だけを検索するかどうか指定します。

使用できる定数は、次に示す MsoTriState クラスの定数のいずれかです。

msoCTrue

msoFalse (既定値)

msoTriStateMixed

msoTriStateToggle

msoTrue 単語の一部ではなく、完全に一致する単語を検索します。

Fonts オブジェクトの Replace メソッド

Fonts コレクションのフォントを置き換えます。

expression.Replace(Original, Replacement)

expression 必ず指定します。対象となるオブジェクトへの参照を返すオブジェクト式を指定します。

Original 必ず指定します。文字列型 (String) の値を指定します。置き換えるフォントの名前を指定します。

Replacement 必ず指定します。文字列型 (String) の値を指定します。置換フォントの名前を指定します。

使用例

TextRange オブジェクトの場合

次の使用例は、作業中のプレゼンテーションのすべての図形で、"like" と完全に一致するすべての単語を "NOT LIKE" に置き換えます。

Sub ReplaceText()

Dim oSld As Slide

Dim oShp As Shape

Dim oTxtRng As TextRange

Dim oTmpRng As TextRange

Set oSld = Application.ActivePresentation.Slides(1)

For Each oShp In oSld.Shapes

Set oTxtRng = oShp.TextFrame.TextRange

Set oTmpRng = oTxtRng.Replace(FindWhat:="like", _

Replacewhat:="NOT LIKE", WholeWords:=True)

Do While Not oTmpRng Is Nothing

Set oTxtRng = oTxtRng.Characters(oTmpRng.Start + oTmpRng.Length, _

oTxtRng.Length)

Set oTmpRng = oTxtRng.Replace(FindWhat:="like", _

Replacewhat:="NOT LIKE", WholeWords:=True)

Loop

Next oShp

End Sub

2006/09/06 11:26:19
id:taknt No.2

回答回数13539ベストアンサー獲得回数1198

ポイント10pt

質問にある前の質問では 解決できないのでしょうか?

それを 少し変えれば 希望のものに近くなると思われます。

ちょっと変えたのを 下に 提示します。

あと、文中にある 「りんご」を「みかん」に変える場合は、

チェックの仕方と 変える部分を 変更しないと ダメですね。

それが必要ならば それも 提示できます。


Sub ChangeKanaText()

' スライドを取得

Dim slide

For Each slide In ActiveWindow.Parent.Slides

' スライド内のシェイプオブジェクト(テキストボックス等)を取得

Dim shape

For Each shape In slide.Shapes

' シェイプ(テキストボックス等)の単語を取得

Dim word

For Each word In shape.TextFrame.TextRange.Words

' 文字列の置換

If word.Text = "りんご" Then

word.Text = "みかん"

End If

Next

Next

Next

End Sub

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_t13.htm

  • id:lionfan
    taknt様、申し訳ございません。すれちがってしまいました・・・。
    ポイントは別に送信させていただきます。ありがとうございます!!
  • id:taknt
    lionfanさん、ありがとうございました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません