6

パワーポイントファイルの膨大なセットがあり、そこからすべてのテキストを抽出して、すべてを1つの大きなテキストファイルにまとめたいと思っています。各ソース(PPT)ファイルには複数のページ(スライド)があります。フォーマットは気にせず、単語だけです。

これは、PPTで^ A ^ Cを実行し、続いてメモ帳で^ Vを実行するだけで、ファイルを使用して手動で実行できます。次に、PPTでページを下に移動し、パワーポイントのスライドごとに繰り返します。(残念ながら、すべてを取得する^ Aを実行することはできません...その後、sendkeyを使用してコピー/貼り付けできます)

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

これは当たり前のことのようですが、どこにも例がありません。

誰かがこれを行うためのサンプルコードを持っていますか?

4

2 に答える 2

5

開始するためのコードを次に示します。これにより、スライド内のすべてのテキストがデバッグ ウィンドウにダンプされます。フォーマット、グループ化、またはダンプ以外のことをしようとしません。

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
于 2011-01-13T01:36:42.517 に答える
1

次の例は、上記のOtakuのコードに基づいてファイルのリストをループするコードを示しています。

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
于 2011-01-18T21:59:18.283 に答える