使用 Excel 宏提取 Powerpoint 数据

Powerpoint data extraction with Excel Macro

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

使用我在 this thread

的最后 post 中找到的代码
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 table。但是,如果您想收集更多列,请更改此行: 对于 j = 0 至 4 您想要多少列(例如,对于 6 列,j = 0 到 5)

您可以将该列数更改为变量作为子项的参数。我确信有一种方法可以使用 For Each 循环遍历所有列来重写代码。但这应该可以帮助您入门。