Как изменить цвет заливки для вставленной картинки (значка) в 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