Excel VBA: Rellenar.Imagen de usuario

Excel VBA: Rellenar.Imagen de usuario

Recibo cell.Comment.ShapeRange...un error: "Error en tiempo de ejecución '1004': error definido por la aplicación o definido por el objeto". ¿Qué tiene de malo?

Cells(cell.Row, 6)es la columna de referencia que contiene las URL de las imágenes. P.ejhttp://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

Respuesta1

Primero, .shaperangeno es una propiedad o método de, commentpor lo que no puedes usarlo.

Aquí hay un ejemplo que funcionaría:

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

Lo que nos lleva al uso de .UserPicture()que requiere una ruta como cadena. Entonces, si su ruta está en esa celda, asegúrese de tomar su valor.

Entonces si la celda G1 =C:\Users\path\to\pic.jpg

rng.Comment.Shape.Fill.UserPicture (Range("G1"))

trabajaría.


Esta es una edición desello de historiaeso lo permito porque no altera la intención original de la respuesta y debido a que se basa en gran medida en ella, es posible que no funcione muy bien o no tenga visibilidad como una nueva respuesta.

Esta versión funcionó en macOS 10.10.5 con 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

información relacionada