好的,所以到目前为止我已经成功编写了以下代码,但我在424 object required
开头的行上一直出现range
错误。谁能告诉我如何解决这个问题?
Sub GetText()
Set PPApp = GetObject(, "PowerPoint.Application")
i = 1
Do While i <= PPApp.ActivePresentation.Slides(1).Shapes.Count
If PPApp.ActivePresentation.Slides(1).Shapes(i).Type = msoTextBox Then
range(Cells(i, 15)).Value = PApp.ActivePresentation.Slides(1).Shapes(i).TextFrame.TextRange.Text
End If
i = i + 1
Loop
End Sub
答案 0 :(得分:2)
您的代码中有两个错误。
Simoco已经解决了您的第一个错误。即您需要使用Cells(i, 15).Value
代替range(Cells(i, 15)).Value
你有一个错字。如果您使用Option Explicit
,那么您就会知道错误的位置;)
您有PPApp
作为powerpoint对象,但正在使用PApp
因此object required error
另外,请声明您的变量并完全限定您的对象。
这是你在尝试的吗?
Option Explicit
Sub GetText()
Dim PPApp As Object
Dim ws As Worksheet
Dim i As Long
Set PPApp = GetObject(, "PowerPoint.Application")
i = 1
'~~> Change this to the relevant sheet
Set ws = ThisWorkbook.Sheets("Sheet1")
Do While i <= PPApp.ActivePresentation.Slides(1).Shapes.Count
If PPApp.ActivePresentation.Slides(1).Shapes(i).Type = msoTextBox Then
ws.Cells(i, 15).Value = PPApp.ActivePresentation.Slides(1).Shapes(i).TextFrame.TextRange.Text
End If
i = i + 1
Loop
End Sub
很少有其他观察结果。
您正在使用GetObject
。如果有多个powerpoint实例,那么很多人都无法获得正确的结果。
即使形状不是i
,您也会增加msoTextBox
的值。这可能会导致您在写入Excel工作表时跳过行。您可能希望使用其他变量并在If-EndiF