![Excel VBA: Fill.UserPicture](https://rvso.com/image/1476406/Excel%20VBA%3A%20Fill.UserPicture.png)
В cell.Comment.ShapeRange...
я получаю ошибку: "Run-Time error '1004': Ошибка, определенная приложением или объектом". Что с ней не так?
Cells(cell.Row, 6)
— это справочный столбец, содержащий URL-адреса изображений. Напримерhttp://somelink.com/img.jpg
Sub test()
Dim rng As Range
Set rng = Range("B2:B2331")
For Each cell In rng.Cells
cell.AddComment
cell.Comment.Text Text:="Owner:" & Chr(10) & ""
cell.Comment.ShapeRange.Fill.UserPicture Cells(cell.Row, 6).Value
Next
End Sub
решение1
Во-первых, .shaperange
это не свойство или метод, comment
поэтому вы не можете его использовать.
Вот пример, который подойдет:
Sub tete()
Dim rng As Range
Set rng = ActiveSheet.Cells(5, 6)
rng.AddComment
rng.Comment.Text Text:="hi"
rng.Comment.Shape.Fill.UserPicture ("C:\Users\path\to\pic.jpg")
End Sub
Что приводит нас к использованию, .UserPicture()
которое требует путь как строку. Так что если ваш путь находится в этой ячейке, убедитесь, что вы берете его значение.
Итак, если ячейка G1 =C:\Users\path\to\pic.jpg
rng.Comment.Shape.Fill.UserPicture (Range("G1"))
должно сработать.
Это редактированиеисторияштампчто я допускаю, потому что это не меняет изначального замысла ответа и, поскольку он в значительной степени основан на нем, он может оказаться не слишком удачным или не иметь заметности в качестве нового ответа.
Эта версия работала в macOS 10.10.5 с Excel 2011.
Sub tete()
' Raystafarian
' https://superuser.com/a/1011255/2638314
' This is the shortest code I have seen for inserting a picture into
' a commnet. & It works.
Dim rng As Range
Dim aPicture As String
Debug.Print "-------------------------- " & Now
aPicture = "Macintosh SSD:Users:mac:Desktop:numbers:1.png"
Set rng = ActiveSheet.Cells(5, 8)
rng.AddComment
rng.Comment.Text Text:=" "
Debug.Print aPicture
rng.Comment.Shape.Fill.UserPicture (aPicture)
End Sub