Quero criar uma tabela de 200 linhas no aplicativo PowerPoint.
O código a seguir gera este erro: Erro de tempo de execução 424: Objeto requerido
Como resolver esse erro?
Public Sub Macro1()
'Delete all slides
For i = ActivePresentation.Slides.Count To 1 Step -1
ActivePresentation.Slides(i).Delete
Next i
'Add a blank slide
ActivePresentation.Slides.Add Index:=1, Layout:=ppLayoutBlank
'Zoom out
ActiveWindow.View.Zoom = 40
'Add a Table
With ActivePresentation.Slides(1).Shapes.AddTable(NumRows:=1, NumColumns:=1, Left:=5, Top:=5, Width:=900, Height:=500)
.Name = "tbl"
End With
'Make 200 rows
While ActivePresentation.Slides(1).Shapes("tbl").Table.Rows.Count < 200
ActivePresentation.Slides(1).Shapes("tbl").Table.Rows.Add
Wend
'Change height for all rows
For i = 1 To ActivePresentation.Slides(1).Shapes("tbl").Table.Rows.Count
ActivePresentation.Slides(1).Shapes("tbl").Table.Rows(i).Height = 8
Next i
'Fill text to the 200 cells
For i = 1 To 200
ActivePresentation.Slides(1).Shapes("tbl").Table.Cell(i, 1).Shape.TextFrame.TextRange.Text = i
Next i
End Sub
A linha a seguir gera um erro.
ActivePresentation.Slides(1).Shapes("tbl").Table.Cell(i, 1).Shape.TextFrame.TextRange.Text = i
Copiei seu código, fiz um teste e tive o mesmo problema, curiosamente várias vezes no índice 170 (mas isso pode ser por coincidência).
Quando o código parava com esse erro e eu pressionava "Depurar", eu sempre conseguia continuar (usando F5) e o código era executado com sucesso.
Por algum motivo, o PowerPoint não era rápido o suficiente para lidar com as solicitações do VBA. Simplesmente adicionei um
DoEvents
loop interno e o problema desapareceu.Modifiquei um pouco o seu código. Isso facilita muito a sua vida como programador quando você trabalha com variáveis de objeto. Eis o que eu tenho: