2017-02-21 24 views
0

У меня есть следующий макрос для Microsoft Powerpoint 365 для экспорта заметок в отдельный файл .txt. Проблема заключается в том, что она исключает точки маркера из заметок, которые указаны в примечаниях. Как я могу исправить эту проблему?Экспорт заметок с форматированием

Sub ExportNotesText() 

    Dim oSlides As Slides 
    Dim oSl As Slide 
    Dim oSh As Shape 
    Dim strNotesText As String 
    Dim strFileName As String 
    Dim intFileNum As Integer 
    Dim lngReturn As Long 

    ' Get a filename to store the collected text 
    strFileName = InputBox("Enter the full path and name of file to extract notes text to", "Output file?", ActivePresentation.Path + "\notes.txt") 

    ' did user cancel? 
    If strFileName = "" Then 
     Exit Sub 
    End If 

    ' is the path valid? crude but effective test: try to create the file. 
    intFileNum = FreeFile() 
    On Error Resume Next 
    Open strFileName For Output As intFileNum 
    If Err.Number <> 0 Then  ' we have a problem 
     MsgBox "Couldn't create the file: " & strFileName & vbCrLf _ 
      & "Please try again." 
     Exit Sub 
    End If 
    Close #intFileNum ' temporarily 

    ' Get the notes text 
    Set oSlides = ActivePresentation.Slides 
    For Each oSl In oSlides 
     For Each oSh In oSl.NotesPage.Shapes 
     If oSh.PlaceholderFormat.Type = ppPlaceholderBody Then 
      If oSh.HasTextFrame Then 
       If oSh.TextFrame.HasText Then 
        strNotesText = strNotesText & "Slide: " & CStr(oSl.SlideIndex) & vbCrLf _ 
        & oSh.TextFrame.TextRange.Text & vbCrLf & vbCrLf 
       End If 
      End If 
     End If 
     Next oSh 
    Next oSl 

    ' now write the text to file 
    Open strFileName For Output As intFileNum 
    Print #intFileNum, strNotesText 
    Close #intFileNum 

    ' show what we've done 
    ' lngReturn = Shell("NOTEPAD.EXE " & strFileName, vbNormalFocus) 

End Sub 
+0

Возможно, вы используете фактическое диалоговое окно вместо 'InputBox', чтобы получить имя файла. Кроме того, содержит ли 'strNotesText' все, что похоже на маркеры? Ваш вопрос может/должен, вероятно, быть сужен до части «Получить текст примечаний». –

+2

Обычно это «сделанная вещь», чтобы обеспечить атрибуцию кода, который вы скопировали из другого источника. Лично я не слишком расстроен, так что, будучи моим кодом, вы скопировали NBD. Другие могут быть оскорблены. Давать кредит (или обвинять?), Когда это связано, является хорошей привычкой. Файлы IAC, TXT обычно не показывают пули; хотите ли вы представить их каким-то другим персонажем, возможно, звездочкой? –

+0

@SteveRindsberg Я извиняюсь, Стив, я бы обычно, однако, у меня был этот макрос на некоторое время и не мог вспомнить его источник. – Dan

ответ

2

После того, как у вас есть ссылка на TextFrame ноты, вы можете перебрать свою коллекцию .TextRange.Paragraphs.

Это даст вам звездочку & пространства & и текст абзаца или только текст, если нет пули:

If .Paragraphs(x).ParagraphFormat.Bullet.Type = ppBulletUnnumbered Then 
    Debug.Print "* " & .Paragraphs(x).Text 
Else 
    Debug.Print .Paragraphs(x).Text 
End if 

Там также может быть пронумерован или пули изображения. Не пойдем туда.