Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA Excel Error91-找不到对象变量-PowerPoint自动化-简单错误?_Excel_Vba_Object_Powerpoint - Fatal编程技术网

VBA Excel Error91-找不到对象变量-PowerPoint自动化-简单错误?

VBA Excel Error91-找不到对象变量-PowerPoint自动化-简单错误?,excel,vba,object,powerpoint,Excel,Vba,Object,Powerpoint,我对VBA比较陌生,我现在花了几个小时试图找出这一错误的原因。我真的需要帮助:P 我有一个Excel宏,可以自动创建PowerPoint,并将形状从Excel复制到PP。到目前为止还不错。现在,我正在尝试将文本框作为形状添加到PP中,这对第一个文本框有效,但在下一张幻灯片中对第二个文本框抛出错误。 main方法创建PP,然后调用Subs从另一个模块插入不同的文本框 代码如下所示: Sub mainmethod() Public Shape As Object Public PPshape As

我对VBA比较陌生,我现在花了几个小时试图找出这一错误的原因。我真的需要帮助:P

我有一个Excel宏,可以自动创建PowerPoint,并将形状从Excel复制到PP。到目前为止还不错。现在,我正在尝试将文本框作为形状添加到PP中,这对第一个文本框有效,但在下一张幻灯片中对第二个文本框抛出错误。 main方法创建PP,然后调用Subs从另一个模块插入不同的文本框

代码如下所示:

Sub mainmethod()
Public Shape As Object
Public PPshape As PowerPoint.Shape
Public PPapp As PowerPoint.Application
Public PPpres As PowerPoint.Presentation
Public PPslide As PowerPoint.Slide
Public rng As Range
Public PPdateipfad As String
Public maturitylevel As String
Public PPtextbox_1 As PowerPoint.Shape
...
Set PPslide = PPapp.ActivePresentation.Slides(2).Duplicate.Item(1)
Call Textbox_1(PPslide)
Call Textbox_2(PPslide)
...
现在,有时候这对textbox1有效,只会对textbox2抛出一个错误。有时,它只适用于textbox1,但总是为textbox2抛出一个错误

行上的错误为“对象变量或未设置块变量”:

设置PPtextbox_1=PPslide.Shapes.AddTextbox(msotextorientation卧式,左侧:=167,顶部:=460,宽度:=625,高度:=25)


谢谢你的帮助

PPslide
不是
Set
。谢谢您的回答!我也想过这个。但是我必须把它放在哪里呢?因为它是在主方法中设置的。我必须在文本框子框中再次设置它吗?我想如果它是公开的,它会从主要方法中获取。非常感谢你的回答。我已经在文本框子框中尝试了“设置PPslide=PowerPoint.ActivePresentation.Slides(PowerPoint.ActivePresentation.Slides.Count)”,但无效。这是使用
Public
变量的危险。我想添加一个参数:
Sub Textbox_1(ByVal PPslide As Powerpoint.Slide)
。我这样做了,现在它在调用Subtext1()的主方法中说“编译错误:参数不是可选的”。很抱歉,作为一个VBA noob浪费了您的时间,但我非常感谢您的帮助更改
调用Textbox_1()
文本框1 PPslide
,或
调用文本框1(PPslide)
如果您喜欢使用
调用
Sub Textbox_1(ByVal PPslide As PowerPoint.Slide)

Set PPtextbox_1 = PPslide.Shapes.AddTextbox(msoTextOrientationHorizontal, Left:=167, Top:=460, Width:=625, Height:=25)

With PPtextbox_1.TextFrame.TextRange
    .Text = "textbox1"

End With
End Sub
Sub Textbox_2(ByVal PPslide As PowerPoint.Slide)

Set PPtextbox_2 = PPslide.Shapes.AddTextbox(msoTextOrientationHorizontal, Left:=167, Top:=460, Width:=625, Height:=25)

With PPtextbox_2.TextFrame.TextRange
    .Text = "textbox2"

End With
End Sub