Большое усилие. Спасибо за то, что поделились своим окончательным решением с сообществом, но все же принимаете ответ отаку.

я есть огромный набор файлов powerpoint, из которых я хочу извлечь весь текст и просто объединить его в один большой текстовый файл. Каждый исходный файл (PPT) имеет несколько страниц (слайдов). Меня не волнует форматирование - только слова.

Я мог бы сделать это вручную с помощью файла, просто ^ A ^ C в PPT, а затем ^ V в блокноте; затем пролистайте страницу вниз в PPT и повторите для каждого слайда в powerpoint. (Жаль, что я не могу просто сделать ^ A, который захватил бы ВСЕ ... тогда я мог бы использовать sendkey для копирования / вставки)

Но есть много сотен этих PPT с различным количеством слайдов.

Кажется, это было бы обычным делом, но я нигде не могу найти пример.

У кого-нибудь есть пример кода для этого?

Ответы на вопрос(2)

файлов на основе приведенного выше кода 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
 froeschli18 янв. 2011 г., 23:50
Большое усилие. Спасибо за то, что поделились своим окончательным решением с сообществом, но все же принимаете ответ отаку.
Решение Вопроса

который поможет вам начать. Это сбрасывает весь текст в слайдах в окно отладки. Он не пытается форматировать, группировать или делать что-либо, кроме простого дампа.

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
 elbillaf13 янв. 2011 г., 22:58
Это оно! Спасибо!
 elbillaf14 янв. 2011 г., 00:57
Все еще есть проблемы. Установите PPT = CreateObject ("PowerPoint.Application") PPT.Visible = True PPT.Presentations.Open имя файла: = src, ReadOnly: = True Установите p = PPT.ActivePresentation для каждого s в p.Слайды для каждого sh в s.Shapes If sh.HasTextFrame Then If sh.TextFrame.HasText Then Print # 1, sh.TextFrame.TextRange.Text End If End If Next Next
 elbillaf14 янв. 2011 г., 01:00
Кажется, что PowerPoint открывается, но я не вижу материала ... когда я просто копирую / вставляю ваш код, он работает нормально, но я обрабатываю сотни (возможно, тысячи) этих файлов одновременно. Не уверен, как отформатировать эту вещь в последующих комментариях. спасибо, ПТФ
 Todd Main13 янв. 2011 г., 06:44
Здорово. Обратите внимание, что окно отладки имеет ограниченное количество текста, которое оно может содержать. Вы можете выгнать результаты в .txt или другой файл, хотя.
 elbillaf13 янв. 2011 г., 04:30
Я попробую и вернусь!

Ваш ответ на вопрос