从表中读取数据在特定表中不起作用

问题描述 投票:0回答:1

我目前正在尝试通过从演示文稿中删除不需要的幻灯片来创建新的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列中的那些幻灯片。它所做的只是打开演示文稿而没有别的。没有错误消息。

excel vba powerpoint
1个回答
0
投票

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

这有助于:

 Set myTable = ThisWorkbook.Sheets("Sheet1").ListObjects("Table3")
 TempArray = myTable.ListColumns(1).DataBodyRange.SpecialCells(xlCellTypeVisible)
© www.soinside.com 2019 - 2024. All rights reserved.