使用Excel宏提取Powerpoint数据



在过去的一周里,我一直在VBA中开发一个excel宏,该宏从多张幻灯片中提取特定数据。我能够编写一个宏,它能够提取Title对象中的所有细节,并将它们全部放在一列中。我需要能够从所有其他字段中提取数据,但它们是表而不是文本框。我能够弄清楚如何提取文本框的内容,但我无法弄清楚如何引用幻灯片中的表格。一旦我能够参考表中的这些详细信息,我只需要从表中提取特定的详细信息。我四处搜索,找不到任何关于如何从PowerPoint幻灯片中的表格中提取数据的具体信息。

使用我在这个线程的最后一篇文章中找到的代码

Sub DataTransfer()
Dim shp As Shape, i%, j%
'    Dim colCount As Integer
'    Dim rowCount As Integer

Dim rowNum As Integer
Dim rng As Object
Set rng = GetObject(, "Excel.Application").Range("a1")  ' start at top of worksheet
For i = 1 To ActivePresentation.Slides.Count
For Each shp In ActivePresentation.Slides(i).Shapes
If shp.HasTable Then
With shp.Table
'                    colCount = .Columns.Count
'                    rowCount = .Rows.Count
For rowNum = 0 To .Rows.Count - 1
For j = 0 To 4
rng.Offset(rowNum, j).Value = (.Cell(rowNum + 1, j + 1).Shape.TextFrame.TextRange)
Next j
'                        rng.Offset(rowNum, 4).Interior.Color = (.Cell(rowNum + 1, 5).Shape.TextFrame.TextRange)
Next rowNum
Set rng = rng.Offset(rowNum + 1) ' 1 blank row between tables
End With
End If
Next shp
Next i

End Sub

上面的代码示例在5x5表上工作。但是,如果要收集更多列,请更改此行:对于j=0到4到您想要的列数(例如,对于j=0到5的6列(

您可以将列的数字更改为变量,作为sub的参数。我相信有一种方法可以使用for Each循环重写所有列的代码。但这应该让你开始。

最新更新