我在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属性相关的行时,它只会出错。
有没有人知道为什么会发生这种情况? 提前谢谢......
答案 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属性,因为当我替换图像时只需更改自动形状的填充颜色,就可以了(换句话说,我保留了所有属性,只更改了填充)。