ฉันต้องการที่จะให้คำตอบบางส่วนสำหรับคำถามของฉันเองขึ้นอยู่กับ VBA ที่พบในเธรดต่อไปนี้ใน stack overflow: VBA เพื่อแสดงรายการชื่อวัตถุทั้งหมดของงานนำเสนอ PowerPoint
เทคนิคนี้ช่วยให้บุคคลสามารถดูรูปร่างทั้งหมดที่ใช้ในงานนำเสนอ Power Point ผ่านรายงานไฟล์ข้อความ
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
สิ่งนี้จะสร้างรายงานข้อความซึ่งมีลักษณะดังนี้:
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...
สำหรับกรณีการใช้งานเฉพาะของฉันฉันต้องการรายการรูปทรงเฉพาะต่อสไลด์ซึ่งฉันทำได้โดยใช้บานหน้าต่างการเลือกเพื่อตั้งชื่อรูปภาพแต่ละภาพที่มีรูปหรือตารางด้วยคำนำหน้าที่เหมาะสมจากนั้นเรียกใช้สิ่งนี้:
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
น่าเสียดายที่วิธีเดียวที่ฉันสามารถให้แมโครพิมพ์วัตถุเหล่านี้ตามลำดับจากน้อยไปหามากคือถ้าฉันใช้บานหน้าต่างการเลือกเพื่อจัดเรียงรูปร่างด้วยตนเองในลำดับตรงกันข้าม (มากไปหาน้อย) ก่อน
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.)