无法使用Excel VBA将Powerpoint文本框内容提取到Excel中

好吧,所以我已经设法写下面的代码到目前为止,但我一直得到一个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 

你的代码中有两个错误。

  1. Simoco已经解决了你的第一个错误。 即你需要使用Cells(i, 15).Value而不是range(Cells(i, 15)).Value

  2. 你有一个错字。 如果你会使用Option Explicit那么你会知道错误的地方;)

你有PPApp作为PowerPoint的对象,但正在使用PApp ,因此object required error

也请声明你的variables,并完全限定你的对象。

这是你正在尝试?

 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 

很less有其他意见。

  1. 您正在使用GetObject 。 如果有多个powerpoint实例,那么你很多没有得到正确的结果。

  2. 即使形状不是msoTextBox你也会增加i的值。 这可能会导致您在写入Excel工作表时跳过这些行。 你可能想要使用一个不同的variables,并在If-EndiF增加它