Chciałem dostarczyć częściową odpowiedź na moje własne pytanie, oparte na VBA znalezionym w następującym wątku na temat przepełnienia stosu: VBA, aby wyświetlić listę wszystkich nazw obiektów prezentacji Powerpoint
Rozwiązanie to technicznie pozwala osobie przeglądać wszystkie kształty używane w prezentacji Power Point za pomocą raportu pliku tekstowego.
Sub ListAllShapes()
Dim curSlide As Slide
Dim curShape As Shape
Dim lFile As Long
Dim sPath As String
sPath = ActivePresentation.Path
lFile = FreeFile
Open sPath & "\All Shapes.txt" For Append As #lFile
For Each curSlide In ActivePresentation.Slides
Print #lFile, "SLIDE " & curSlide.SlideNumber
For Each curShape In curSlide.Shapes
Print #lFile, " " & curShape.Name
Next curShape
Next curSlide
Close #lFile
End Sub
Spowoduje to wygenerowanie raportu tekstowego, który wygląda tak:
SLIDE 1
Rectangle 2
Rectangle 4
Rectangle 4
TextBox 10
Rectangle 4
SLIDE 2
TextBox 7
Rectangle 2
Rectangle 4
Rectangle 4
Line 37
Picture 1
Picture 2
SLIDE 3
Rectangle 2
Rectangle 4
Rectangle 7
TextBox 7
Line 28
Picture 3
Picture 4, etc...
W przypadku mojej konkretnej sprawy chciałem listę tylko niektórych kształtów na slajd, którą osiągnąłem, używając najpierw panelu wyboru, aby nazwać każdy obraz zawierający figurę lub tabelę z odpowiednim prefiksem, a następnie uruchamiając to:
Sub ListFiguresAndTables()
Dim curSlide As Slide
Dim curShape As Shape
Dim lFile As Long
Dim sPath As String
sPath = ActivePresentation.Path
lFile = FreeFile
Open sPath & "\Figures and Tables.txt" For Append As #lFile
For Each curSlide In ActivePresentation.Slides
Print #lFile, "SLIDE " & curSlide.SlideNumber
For Each curShape In curSlide.Shapes
If Left(curShape.Name, 4) = "Fig." Or Left(curShape.Name, 5) = "Table" Then
Print #lFile, " " & curShape.Name
End If
Next curShape
Next curSlide
Close #lFile
End Sub
Niestety, jedynym sposobem, w jaki makro może wydrukować te obiekty w porządku rosnącym, jest użycie panelu wyboru do ręcznego uporządkowania kształtów w kolejności odwrotnej (malejąco).
SLIDE 1
Fig. 1
Fig. 2
Fig. 3
Table 1
SLIDE 2
Fig. 4
Fig. 5
Fig. 6
SLIDE 3
Table 2
Table 3 (etc.)