使用Excel Macro进行Powerpoint数据提取

这过去一周,我一直在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循环来重写代码。但这应该可以帮助您入门。

本文链接:https://www.f2er.com/3105523.html

大家都在问