#contents
*Power Point 関連情報 [#ue3e9409]
**サンプルコード [#r7530d70]
***テキストボックスの文字列を置換するサンプル [#v9f8156a]
-テキストボックスの文字列を置換するサンプル
 ' <使い方>
 ' 1. Power Point の「Visual Basic Editor」を起動します。
 ' 2. [挿入] - [標準モジュール] を選択します。
 ' 3. 下記のコードを貼り付けます
 ' 4. [実行] - [Sub/ユーザー フォームの実行] で
 '    ChangeKanaText() プロシージャを実行します。
 '    → スライド上の文字列を一括置換します。
 Option Explicit
 
 Function IsKatakana(strTarget As String) As Boolean
     Dim strPattern
     strPattern = "[ア-ンア-ン]"   ' カタカナ範囲チェック用
     Dim reg As Object
     Set reg = CreateObject("VBScript.RegExp") ' 正規表現コンポーネントを利用
     reg.Pattern = strPattern
     IsKatakana = reg.Test(strTarget)
     Set reg = Nothing
 End Function
 
 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 IsKatakana(word.Text) = True Then
                     ' カタカナの場合は全角に変換
                     word.Text = StrConv(word.Text, vbWide)
                 Else
                     ' それ以外は半角に変換
                     word.Text = StrConv(word.Text, vbNarrow)
                 End If
             Next
         Next
     Next
 End Sub
-補足(ポイント送信にて連絡)
 > 質問ですが、VBAの記述の中で修正しなければならない
 > (はてなの投稿で全角になってしまった部分)
 > は、[ア-ンア-ン]のところでしょうか?
 > どこを半角に修正すればよいでしょうか?
 
 はてな投稿時に全角になってしまう部分は「’」「”」「¥」の部分と半角カタカナです。
 [ア-ンア-ン] は、実際は [全角ア-ン、半角ア-ン] となっています。
 あと、ソースコードを見やすくする為、全角スペースでインデントを
 付けてあります。
 
 コードを修正するのが面倒であれば、
 
 http://www.hondarer-soft.com/cx/pukiwiki/pukiwiki.php?Memo%2F2004-12-27
 
 にオリジナルのソースコードを置いてありますので、こちらをご利用ください。
 
 
 > 実行してみましたが、
 > For Each word In shape.TextFrame.TextRange.Words
 > のところでひっかかりました。
 > 『TextFrame.TextRange:無効な要求です。この種類の図形にテキスト枠は設定できません。』
 > というメッセージです。
 
 該当ファイルが無いので、実際の事象が分かりませんが、
 おそらく、テキストフレームを含まないようなシェイプオブジェクトが
 存在する為だと思われます。
 
 想定される問題に対応したバージョンを作成致しました。

-テキストボックスの文字列を置換するサンプル2(修正版)
 ' <使い方>
 ' 1. Power Point の「Visual Basic Editor」を起動します。
 ' 2. [挿入] - [標準モジュール] を選択します。
 ' 3. 下記のコードを貼り付けます
 ' 4. [実行] - [Sub/ユーザー フォームの実行] で
 '    ChangeKanaText() プロシージャを実行します。
 '    → スライド上の文字列を一括置換します。
 Option Explicit
 
 Function IsKatakana(strTarget As String) As Boolean
     Dim strPattern
     strPattern = "[ア-ンア-ン]"   ' カタカナ範囲チェック用
     Dim reg As Object
     Set reg = CreateObject("VBScript.RegExp") ' 正規表現コンポーネントを利用
     reg.Pattern = strPattern
     IsKatakana = reg.Test(strTarget)
     Set reg = Nothing
 End Function
 
 Sub ChangeKanaText2()
     ' スライドを取得
     Dim slide
     For Each slide In ActiveWindow.Parent.Slides
         ' スライド内のシェイプオブジェクト(テキストボックス等)を取得
         Dim shape
         For Each shape In slide.Shapes
             ' シェイプが TextFrame を持つ場合のみ後続の処理を実行
             If shape.HasTextFrame = msoTrue Then
                 ' シェイプ(テキストボックス等)の単語を取得
                 Dim word
                 For Each word In shape.TextFrame.TextRange.Words
                     ' 文字列の置換
                     If IsKatakana(word.Text) = True Then
                         ' カタカナの場合は全角に変換
                         word.Text = StrConv(word.Text, vbWide)
                     Else
                         ' それ以外は半角に変換
                         word.Text = StrConv(word.Text, vbNarrow)
                     End If
                 Next
             End If
         Next
     Next
 End Sub

-実行例
--変換前
#ref(PowerPoint_Convert_Before.jpg)
--変換後
#ref(PowerPoint_Convert_After.jpg)

-はてな
--http://www.hatena.ne.jp/1104101386

-参考情報
--[RegExp クラス] VBScript - Dynamic Scripting
---http://www.interq.or.jp/student/exeal/dss/ref/vbscript/object/regexp.html
--正規表現による Visual Basic Scripting Edition (VBScript) の機能強化
---http://www.microsoft.com/japan/msdn/columns/scripting/scripting051099.asp
--StrConv() 関数の使用例
---http://www.hondarer-soft.com/cx/pukiwiki/pukiwiki.php?Memo%2F2004-07-16
--PowerPoint でテキストボックスにアクセスする方法
---http://www.hondarer-soft.com/cx/pukiwiki/pukiwiki.php?Memo%2F2004-06-27

#comment


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS