Как изменить цвет заливки для вставленной картинки (значка) в Excel 2016 с VBA

Попытка добавить значок (тот, что на вкладке "Вставить", а не условное форматирование) и изменить цвет заливки. Использование макро-рекордера приводит к следующему коду:

Sub Macro1()

    ActiveSheet.Pictures.Insert( _
        "https://hubblecontent.osi.office.net/ContentSVC/Content/Download?provider=MicrosoftIcon&fileName=Document.svg" _
    ).Select
    With Selection.ShapeRange.Fill
        .Visible = msoTrue
        .ForeColor.ObjectThemeColor = msoThemeColorAccent1 'this line throws the error
        .ForeColor.TintAndShade = 0
        .ForeColor.Brightness = -0.25
        .Transparency = 0
        .Solid
    End With

End Sub

Как и ожидалось, это тот же код, который использовался для изменения цвета заливки фигуры. Проблема в том, что код на самом деле не работает. Выдает ошибку во время выполнения The specified value is out of range,

Пытаясь понять это, я заметил, когда щелкнул правой кнопкой мыши на вставленном "значке", что опция "Заполнить" отключена, что, очевидно, не так при вставке вручную. Я подозреваю, что это как-то связано с объектом "Изображения", а не с "Фигурами" и / или необходимостью извлечения информации об изображении из паутины, но я не эксперт. Вот почему я здесь.

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

0 ответов

Я понимаю, что это отвечает на старый вопрос. Я столкнулся с той же проблемой, и, очевидно, записанный макрос не сильно помог, поэтому мне пришлось немного поработать. Это работает для меня...

Sub Macro1()

    Const path As String _
    = "https://hubblecontent.osi.office.net/ContentSVC/Content/Download?provider=MicrosoftIcon&fileName=Document.svg"

    Dim sheet As Worksheet
    Set sheet = ActiveSheet
    Dim insertedIcon As Shape
    Set insertedIcon = sheet.Shapes.AddPicture(path, msoFalse, msoTrue, 0, 0, -1, -1)

    With insertedIcon.Fill
        .Visible = msoTrue
        .ForeColor.ObjectThemeColor = msoThemeColorAccent1
        .ForeColor.TintAndShade = 0
        .ForeColor.Brightness = -0.25
        .Transparency = 0
        .Solid
    End With

End Sub

Попробуй это:

Sub Change_Hand_to_Yellow()
Dim shp1 As Shape
Set shp1 = ActiveSheet.Shapes("Graphic 12")
With shp1
 .Fill.ForeColor.RGB = vbYellow
End With

End Sub
Другие вопросы по тегам