Truco Excel. Insertar imágenes con Visual Basic

15 Sep

Si deseáis insertar una imagen en Excel desde Visual Basic mediante una macro tenéis que ejecutar un código similar a este:


Sub inserta_imagen(hoja)
Sheets(hoja).Select
ActiveSheet.Pictures.Insert("C:\grafico.png").Select
With Selection.ShapeRange
.Top = Range("B5").Top
.Left = Range("B5").Left
End With
End Sub

En una hoja de vuestro libro de Excel insertáis el archivo especificado. Luego lo ubicáis donde sea necesario. En el ejemplo que os he puesto en la celda B5. Truco sencillo, saludos.

10 respuestas a «Truco Excel. Insertar imágenes con Visual Basic»

  1. Gracias por su aporte me sirvio bastante, nada mas algo que quisiera que me ayudara seria una vez agregado las imagenes como le hago para borrar las mismas imagenes.
    saludos

  2. Aprende a realizar tus propios Códigos… o se equivoco de pagina ??? es solo para personas con un intelecto mínimo de lógica.. y para eso hay que estudiar …
    Saludos

  3. Worksheets(«nombrehoja»).Pictures.Insert(«c:\IMAGEN.JPG»).Select
    With Selection.ShapeRange
    .Top = Range(«B59»).Top
    .Left = Range(«B59»).Left
    End With

  4. Sub inserta_imagen()
    ‘nombrehoja entre comillas» » igual la ruta entre comillas » »
    Worksheets(«nombrehoja»).Pictures.Insert(«c:\IMAGEN.JPG»).Select
    With Selection.ShapeRange
    .Top = Range(«B59»).Top
    .Left = Range(«B59»).Left
    End With

  5. Chicos, perdon una pregunta.

    Una vez ejecutada la macro, quiero poder enviarlo por mail.
    Hay alguna forma de desvincular la macro a las imagenes traidas asi no se rompe el link cuando lo envio?

    Gracias

  6. Sub PutPicture(ByVal cFullPath As String, ByVal r As Range, ByVal nGAP As Integer)
    ‘ Centra una imagen colocada en el rango de celdas especificado
    ‘ respetando las dimensiones de la imagen
    ‘ ejemplo: CALL PutPicture(«D:\IMG\eg1.jpg»,range(«A1:F5»),2)

    Dim a, b, c, d, ID As Integer

    With ActiveSheet
    .Pictures.Insert (cFullPath)
    ID = .Shapes.Count
    .Pictures(ID).Name = «IMG_» & Format(ID, «0000»)
    .Pictures(ID).ShapeRange.LockAspectRatio = msoTrue

    a = .Pictures(ID).Height
    b = .Pictures(ID).Width
    c = r.Height
    d = r.Width

    If (a * d) > (b * c) Then
    .Pictures(ID).Height = r.Height – 2 * nGAP
    .Pictures(ID).Top = r.Top + nGAP
    .Pictures(ID).Left = r.Left + (r.Width – .Pictures(ID).Width) / 2
    Else
    .Pictures(ID).Width = r.Width – 2 * nGAP
    .Pictures(ID).Top = r.Top + (r.Height – .Pictures(ID).Height) / 2
    .Pictures(ID).Left = r.Left + nGAP
    End If

    End With
    End Sub

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *