0

我有一个 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显示 a 并正确添加图片,但随后会显示错误并停止宏。令人讨厌的是,当我尝试在调试模式下运行它时,它每次都有效。我只能假设我在调试时以某种方式手动修复了问题。

导致问题的语句:

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

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

3 回答 3

1

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

您可以通过执行以下操作来解决此问题:

Dim oSh as Shape

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

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

于 2013-06-20T22:02:48.720 回答
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

希望它会有所帮助...

于 2013-06-20T20:25:15.603 回答
0
Use ActiveWindow.View.GotoSlide oSlide.SlideIndex

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

更多信息可以在这里找到

于 2014-10-01T11:44:14.860 回答