这过去一周,我一直在VBA中使用一个excel宏,该宏可从几张幻灯片中提取特定数据。我能够编写一个宏,该宏能够提取Title对象中的所有详细信息并将它们全部放在一个Column中。我需要能够从所有其他字段中提取数据,但是它们是表格而不是文本框。我能够弄清楚如何提取文本框的内容,但是却无法弄清楚如何引用幻灯片中的表格。一旦可以参考表格中的这些详细信息,我只需要从表格中提取特定的详细信息即可。我四处搜寻,但找不到任何有关如何从PowerPoint幻灯片中的表中提取数据的特定信息。
okam6hz 回答:使用Excel Macro进行Powerpoint数据提取
使用我在this thread的上一篇文章中找到的代码
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列)
您可以将列的编号更改为变量,作为子参数。我确定有一种方法可以使用遍历所有列的For Each循环来重写代码。但这应该可以帮助您入门。