Не могу применить 3d свойства к автофигуре - PullRequest
0 голосов
/ 22 июня 2009

В книге, над которой я работаю в Excel, используется графика с 3d-свойствами, заданными в VBA. Я просто изменил изображение в книге, и теперь 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 голосов
/ 23 июня 2009

На странице справки для объекта ThreeDFormat есть примечание, которое повторяется на странице MSDN здесь

Нельзя применять трехмерные форматирование в некоторые виды фигур, такие как скошенные формы или несколько непересекающихся путей. Большинство из свойства и методы ThreeDFormat объект для такой формы потерпит неудачу.

Так что, если ваша новая фигура попадает в одну из этих довольно схематично определенных категорий, то это может быть вашей проблемой

0 голосов
/ 23 июня 2009

Хорошо, я вроде нашел проблему. Когда я заменил изображение, я удалил исходное изображение и вставил новое, используя Вставить> Изображение> Из файла ... Оказывается, к исходному изображению уже должны были быть применены какие-то 3D-свойства, потому что при замене изображения просто изменив цвет заливки автоформ, это сработало (другими словами, я сохранил все свойства и изменил только заливку).

0 голосов
/ 22 июня 2009

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...