无法使用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
你的代码中有两个错误。
-
Simoco已经解决了你的第一个错误。 即你需要使用
Cells(i, 15).Value
而不是range(Cells(i, 15)).Value
-
你有一个错字。 如果你会使用
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有其他意见。
-
您正在使用
GetObject
。 如果有多个powerpoint实例,那么你很多没有得到正确的结果。 -
即使形状不是
msoTextBox
你也会增加i
的值。 这可能会导致您在写入Excel工作表时跳过这些行。 你可能想要使用一个不同的variables,并在If-EndiF
增加它