无法将3d属性应用于自动形状

时间:2009-06-22 07:03:34

标签: excel vba excel-vba

我在Excel中使用的工作簿使用具有在VBA中设置的3d属性的图形。我刚刚更改了工作簿中的图像,现在Excel抱怨它无法执行以下任何代码行:

Selection.ShapeRange.ThreeD.Depth = fsdoord
Selection.ShapeRange.ThreeD.ExtrusionColor.RGB = carcol
Selection.ShapeRange.ThreeD.PresetLightingDirection = msoLightingBottom

产生的错误是

Run-time error '70':

Permission denied

我仍然可以将所有其他属性应用于此形状;当我尝试执行与3d属性相关的行时,它只会出错。

有没有人知道为什么会发生这种情况? 提前谢谢......

3 个答案:

答案 0 :(得分:0)

ShapeRange实际上是Shapes的集合。您需要向下钻取一个级别以获取形状对象。 (因为您尝试使用的属性适用于Excel.Shape。)

    Sub Example()
    Dim ws As Excel.Worksheet
    Dim shp As Excel.Shape
    Set ws = Sheet1
    Set shp = ws.Shapes(1)
    shp.ThreeD.Depth = 10.5!
    shp.ThreeD.ExtrusionColor.RGB = &HF08300
    shp.ThreeD.PresetLightingDirection = msoLightingBottom
End Sub
Sub Example2()
    Dim shpRng As Excel.ShapeRange
    Dim shp As Excel.Shape
    Set shpRng = Selection.ShapeRange
    Set shp = shpRng.Item(1)
    shp.ThreeD.Depth = 25.5!
    shp.ThreeD.ExtrusionColor.RGB = &HFF0083
    shp.ThreeD.PresetLightingDirection = msoLightingBottom
End Sub

答案 1 :(得分:0)

ThreeDFormat对象的帮助页面上有一条评论,并在MSDN页面上重复here

  

你不能申请三维   格式化为某种形状,   如斜面形状或   多个不相交的路径。大部分的   的属性和方法   这种形状的ThreeDFormat对象   会失败。

因此,如果您的新形状属于其中一个相当粗略定义的类别,则可能是您的问题

答案 2 :(得分:0)

好的,我找到了问题。当我替换图像时,我删除了原始图像并使用插入>图像>从文件中插入新图像...原来图像必须已经应用了某种3d属性,因为当我替换图像时只需更改自动形状的填充颜色,就可以了(换句话说,我保留了所有属性,只更改了填充)。