从表中读取数据不适用于特定表

时间:2019-04-26 12:46:43

标签: excel vba powerpoint

我目前正在尝试通过从演示文稿中删除不需要的幻灯片来创建新的PPT演示文稿。在Excel中表格的第一列中选​​择了幻灯片及其幻灯片编号。

我试图通过采用另一张表而不是我要使用的表来解决此问题,并且它可以工作。由于某些原因,它似乎不适用于“表3”。

Sub CreatingNewPresentation()

Dim Destination1PPT As String
Dim ppApp As PowerPoint.Application
Dim ppPres As PowerPoint.Presentation
Dim ppSlide As PowerPoint.Slide
Dim myTable As ListObject
Dim TempArray As Variant
Dim x As Long

If MsgBox("This can take a while", vbOKCancel + vbExclamation, "Creating new presentation") = vbCancel Then

Exit Sub

Else
    Set ppApp = CreateObject("PowerPoint.Application")
        Destination1PPT = "C:\Users\Steffen\Desktop\Test2\1.pptx"
    Set ppPres = ppApp.Presentations.Open(Destination1PPT)
        ppApp.Visible = True
        ppApp.Activate
    Set myTable = ActiveSheet.ListObjects("Table3")
        TempArray = myTable.ListColumns(1).DataBodyRange

    For x = ppApp.ActivePresentation.Slides.Count To 1 Step -1

        If IsError(Application.Match(x, TempArray, False)) Then

                 ppApp.ActivePresentation.Slides(x).Delete

        End If
    Next
End If

End Sub

我希望代码能打开演示文稿并删除除我在“ Table3”中存储的幻灯片以外的所有幻灯片-第1列。 相反,它只是打开演示文稿而已。没有错误消息。

1 个答案:

答案 0 :(得分:0)

我发现了我犯的“愚蠢”错误。我正在获取引用表的所有数据条目,而不是仅获取可见数据条目。

这有帮助:

 Set myTable = ThisWorkbook.Sheets("Sheet1").ListObjects("Table3")
 TempArray = myTable.ListColumns(1).DataBodyRange.SpecialCells(xlCellTypeVisible)