使用VBA从ppt表格中提取文本并粘贴到excel中

使用VBA从ppt表格中提取文本并粘贴到excel中,excel,vba,Excel,Vba,我很难创建一个宏,从每个表中提取数据(文本)并将文本粘贴到excel工作表中,我可以这样做,但我需要在excel电子表格中定位文本ppt中的表格是如何定位的 例如:如果第一个ppt表格的坐标值(左=16,顶部=16),则从第一个表格复制的文本应粘贴到excel中,坐标值与excel中的坐标值相同(左=16,顶部=12) 以下是供参考的图片 这段代码从表中提取并粘贴数据,但它将文本一个接一个地放置在下面,如下所示 这是密码 选项显式 Sub GetTableNames() End Sub 我可

我很难创建一个宏,从每个表中提取数据(文本)并将文本粘贴到excel工作表中,我可以这样做,但我需要在excel电子表格中定位文本ppt中的表格是如何定位的 例如:如果第一个ppt表格的坐标值(左=16,顶部=16),则从第一个表格复制的文本应粘贴到excel中,坐标值与excel中的坐标值相同(左=16,顶部=12)

以下是供参考的图片

这段代码从表中提取并粘贴数据,但它将文本一个接一个地放置在下面,如下所示

这是密码

选项显式

Sub GetTableNames()

End Sub

我可以从ppt中获得表格的坐标值,但我不知道如何使用ppt表格的坐标值,并使用它们在excel中定位文本

我需要帮助

谢谢

Dim pptpres As Presentation
Set pptpres = ActivePresentation

Dim pptSlide As Slide
Set pptSlide = Application.ActiveWindow.View.Slide

Dim pptShapes As Shape, pptTable As Table

Dim XL As Object, WS As Object
Dim arr As Variant, nextTablePlace As Integer, cnt As Integer

Set XL = CreateObject("Excel.Application")
With XL.Workbooks.Add
    Set WS = .Worksheets(1)
End With

nextTablePlace = 1  ' to output first table content into Worksheet

For Each pptSlide In pptpres.Slides
    For Each pptShapes In pptSlide.Shapes
        If pptShapes.HasTable Then
            cnt = cnt + 1
            Set pptTable = pptShapes.Table
            WS.Cells(nextTablePlace, 1) = "Table #: " & cnt ' caption for each table
            nextTablePlace = nextTablePlace + 1
            ReDim arr(1 To pptTable.Rows.Count, 1 To pptTable.Columns.Count) ' resize array to table dimensions
            Dim rr As Integer
            Dim cc As Integer
            For rr = 1 To pptTable.Rows.Count
                For cc = 1 To pptTable.Columns.Count
                    arr(rr, cc) = pptTable.Cell(rr, cc).Shape.TextFrame.TextRange.Text   'get text from each cell into array
                Next
            Next
            
            
            WS.Cells(nextTablePlace, 1).Resize(pptTable.Rows.Count, pptTable.Columns.Count) = arr
            
            ' to next place with gap
            nextTablePlace = nextTablePlace + pptTable.Rows.Count + 2
        End If
    Next
Next
XL.Visible = True