パワーポイントに含まれる全ての文字を、テキストファイルとして取り出すことはできるのでしょうか?


rtfで保存するとアウトラインとして認識された文字はテキストファイルに出力されるのですが、テキストボックスに書かれた文字はテキストファイルに出力されません。
テキストボックスに書かれた文字も含めてテキストファイルに出力する方法をご存じでしたらご教示ください。

よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/04/06 18:06:09
  • 終了:2006/04/07 17:43:41

回答(1件)

id:cx20 No.1

cx20回答回数607ベストアンサー獲得回数1082006/04/07 08:46:01

ポイント200pt

VBA や VBScript を使用することで、テキストボックスやオートシェイプといったオブジェクト単位に情報を取得することが可能です。

  • Power Point VBA の例
' <使い方>
' 1. Power Point の「Visual Basic Editor」を起動。
' 2. [挿入] - [標準モジュール] を選択。
' 3. 下記のコードを貼り付け。
' 4. [実行] - [Sub/ユーザー フォームの実行] を選択。
'    これで、C:\DebugPrint.Log に
'    テキストボックスの内容が出力されます。
Const g_strLogFile = "C:\DebugPrint.Log"
Sub TextBoxToDebugPrint()
    Dim slide
    For Each slide In ActiveWindow.Parent.Slides
        Dim shape
        For Each shape In slide.Shapes
            Debug.Print shape.TextFrame.TextRange.Text
        Next
    Next
End Sub
' デバッグ文字列の出力
Function DebugPrint(ByVal strData As String)
'    Debug.Print strData
    Open g_strLogFile For Append As #1
    Print #1, strData
    Close #1
End Function
  • VBScript の例
' <使い方>
' 1. 以下のコードを TextBoxToFile.vbs として保存します。
' 2. 出力先ファイル名を g_strLogFile に記述します
' 3. Ponwer Point ファイル名を g_strFileName に記述します。
' 4. コマンドプロンプトで、
'    CScript TextBoxToFile.vbs [Enter]
'    を実行します。
'    これで、C:\DebugPrint.Log にテキストボックスの内容が出力されます。
Const g_strLogFile = "C:\DebugPrint.Log" ' 出力先ファイル名
Const g_strFileName = "C:\home\edu\hatena\eno2i\1144314367\test.ppt" ' Ponwer Point ファイル名
Call Main
Sub Main()
    Set app = CreateObject("Powerpoint.Application")
    app.Visible = True
    
    Call app.Presentations.Open(g_strFileName)
    Call TextBoxToDebugPrint(app)
    
    app.Quit
    Set app = Nothing
End Sub
Sub TextBoxToDebugPrint( ByRef app )
    Dim slide
    For Each slide In app.ActiveWindow.Parent.Slides
        Dim shape
        For Each shape In slide.Shapes
            'Debug.Print shape.TextFrame.TextRange.Text
            DebugPrint shape.TextFrame.TextRange.Text
        Next
    Next
End Sub
' デバッグ文字列の出力
Function DebugPrint(ByVal strData )
    Dim fso
    Set fso = CreateObject("Scripting.FileSystemObject")
    With fso.OpenTextFile(g_strLogFile, 8, True) ' 追加書き込みモード
        .WriteLine strData
        .Close
    End With
End Function
  • 関連情報

http://q.hatena.ne.jp/1088310094

http://q.hatena.ne.jp/1088259183

(現在、「Sorry, it's under maintenance. 」と出て、表示されないようです・・・)

id:eno2i

ステキです!

どうもありがとうございます。

2006/04/07 17:42:16
  • id:cx20
    1つ目(Power Point VBA)のコードに誤りがありました。
    正しくは、Debug.Print → DebugPrint です。
    (Debug.Print だと イミディエイト ウィンドウ(デバッグ ウィンドウ)に結果が表示されます。)
    'Debug.Print shape.TextFrame.TextRange.Text
    DebugPrint shape.TextFrame.TextRange.Text

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

トラックバック

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません