形成未知成员:无效请求。要选择形状,其视图必须处于活动状态

时间:2013-06-20 19:14:26

标签: vba selection powerpoint-vba

我有一个PowerPoint宏,可以拍摄照片并将其添加到打开的幻灯片中。当我点击屏幕左侧的幻灯片列表下方(这导致最后一张幻灯片下面的一个稳固闪烁的水平条)后尝试运行宏时,我收到错误:

Runtime error '-2147188160 (80042240)': 
Shape unknown member: invalid request. To select a shape, its view must be active

我认为这是因为我没有选择有效的对象,所以我添加了一个调试语句来确定选择的内容:

If ActiveWindow.Selection.Type = 0 Then
   MsgBox "0"
End If
If ActiveWindow.Selection.Type = 1 Then
   MsgBox "1"
End If
If ActiveWindow.Selection.Type = 2 Then
   MsgBox "2"
End If
If ActiveWindow.Selection.Type = 3 Then
   MsgBox "3"
End If

要添加的第一个图像会导致显示1并正确添加图片,但会显示错误并停止宏。令人讨厌的是,当我尝试在调试模式下运行它时,它每次都有效。我只能假设我在调试时以某种方式手动修复问题。

导致问题的陈述:

ActiveWindow.Selection.SlideRange.Shapes.AddPicture(//file information//).Select 

//the line after
ActiveWindow.Selection.ShapeRange.ZOrder msoSendToBack

3 个答案:

答案 0 :(得分:1)

假设您想在幻灯片放映运行时添加图片,您也可以这样做:

Dim fileName, filename1, filename2
fileName = "c:\PROJEKT\....\Hydrangeas.jpg" 'your path +file name here
fileName1 = ... 'add other file path
fileName2 = ... 'add other file path

With ActivePresentation.SlideShowWindow.View.Slide.Shapes
    .AddPicture fileName, True, True, 10, 10, 100, 100
    .AddPicture fileName1, True, True, 30, 30, 100, 100
    .AddPicture fileName2, True, True, 50, 50, 100, 100
    '...etc.
End With

希望它会有所帮助...

答案 1 :(得分:1)

我想我知道这里发生了什么。如果您/用户在缩略图窗格中单击了幻灯片缩略图,则活动选择可能是幻灯片而不是添加的图片。

你可以通过做这样的事情来解决这个问题:

Dim oSh as Shape

Set oSh = ActiveWindow.Selection.SlideRange.Shapes.AddPicture(//file information//)
oSh.ZOrder msoSendToBack

使用对象引用(在本例中为oSh)而不是使用选择的众多原因中的一个。 ; - )

答案 2 :(得分:0)

Use ActiveWindow.View.GotoSlide oSlide.SlideIndex

要在幻灯片上选择形状之前激活视图。

可以找到更多信息here