2011-01-12 18 views
4

私はすべてのテキストを抽出し、すべてを1つの大きなテキストファイルにまとめたいという巨大なパワーポイントファイルを持っています。各ソース(PPT)ファイルには複数のページ(スライド)があります。私は書式に気をつけません。言葉だけです。VBA内のパワーポイントファイルからすべてのテキストを抽出

私はこれをPPTの^ A^C、メモ帳の^ V、 PPTでページダウンし、パワーポイント内の各スライドについて繰り返します。 (あまりにも悪いことには、すべてをつかむ^ Aをすることはできません...次にコピー/ペーストにsendkeyを使うことができます)

しかし、スライド数の異なるこれらのPPTは何百もあります。

これは一般的なことですが、どこにでも例が見つかりません。

誰でもこれを行うサンプルコードがありますか?

答えて

3

ここにいくつかのコードがあります。これにより、スライド内のすべてのテキストがデバッグウィンドウにダンプされます。ダンプだけではなく、フォーマット、グループ化、または何かを試みることはありません。

Sub GetAllText() 
Dim p As Presentation: Set p = ActivePresentation 
Dim s As Slide 
Dim sh As Shape 
For Each s In p.Slides 
    For Each sh In s.Shapes 
     If sh.HasTextFrame Then 
      If sh.TextFrame.HasText Then 
       Debug.Print sh.TextFrame.TextRange.Text 
      End If 
     End If 
    Next 
Next 
End Sub 
+0

私はそれを試してみると返されます! – elbillaf

+0

クール。デバッグウィンドウには保持できるテキストの量が限られていることに注意してください。あなたは結果を.txtまたは他のファイルに追い出すことができます。 –

+0

それだけです!ありがとう! – elbillaf

1

次の例では、上記で与えられたオタクのコードに基づいてファイルのリストをループするコードを示しています

Sub test_click2() 

Dim thePath As String 
Dim src As String 
Dim dst As String 
Dim PPT As PowerPoint.Application 
Dim p As PowerPoint.Presentation 
Dim s As Slide 
Dim sh As PowerPoint.Shape 
Dim i As Integer 
Dim f(10) As String 

f(1) = "abc.pptx" 
f(2) = "def.pptx" 
f(3) = "ghi.pptx" 

thePath = "C:\Work\Text parsing PPT\" 

For i = 1 To 3 
    src = thePath & f(i) 
    dst = thePath & f(i) & ".txt" 

    On Error Resume Next 
    Kill dst 
    Open dst For Output As #1 
    Set PPT = CreateObject("PowerPoint.Application") 
    PPT.Activate 
    PPT.Visible = True 
    'PPT.WindowState = ppWindowMinimized 
    PPT.Presentations.Open filename:=src, ReadOnly:=True 
    For Each s In PPT.ActivePresentation.Slides 
     For Each sh In s.Shapes 
      If sh.HasTextFrame Then 
       If sh.TextFrame.HasText Then 
        Debug.Print sh.TextFrame.TextRange.Text 
       End If 
      End If 
     Next 
    Next 
    PPT.ActivePresentation.Close 
    Close #1 
Next i 
Set PPT = Nothing 

End Sub 
+0

大きな努力。オタクの答えを受け入れながら、最終的な解決策をコミュニティと共有してくれてありがとう。 – froeschli

関連する問題