Forum Discussion

LizeMarie's avatar
LizeMarie
Brass Contributor
Dec 13, 2022
Solved

Load Image from path into Image ActiveX Control in worksheet

I have the following code:   Private Sub img_Browse_Click()On Error Resume Next Dim img As String Dim xCmpPath As String img = Application.GetOpenFilename If img <> False Then Me.img_Photo.Pic...
  • HansVogelaar's avatar
    Dec 13, 2022

    LizeMarie 

    In such situations, you should temporarily comment out the line

    On Error Resume Next

    because with it, you won't be notified of any errors.

    You declare img as a String, but a String cannot be False. The line

        If img <> False Then

    causes a Type Mismatch error.

    You should declare img as a Variant. That allows it to be any type, whether Boolean (False) or String (a file path).

    In the second place, as far as I know, you cannot change the picture on an existing picture shape. You have to delete the existing picture and insert a new one.

    Try this version - make sure that there is a shape (any shape) named img_Photo on Sheet3.

    Private Sub img_Browse()
        Dim img As Variant
        Dim shp As Shape
        Dim x As Single
        Dim y As Single
        Dim w As Single
        Dim h As Single
        Dim xCmpPath As String
        'On Error Resume Next
        img = Application.GetOpenFilename(FileFilter:= _
            "Pictures (*.jpg;*.png;*.gif;*.bmp),*.jpg;*.png;*.gif;*.bmp")
        If img <> False Then
            Set shp = Sheet3.Shapes("img_Photo")
            x = shp.Left
            y = shp.Top
            w = shp.Width
            h = shp.Height
            shp.Delete
            Set shp = Sheet3.Shapes.AddPicture(img, False, True, x, y, h, w)
            shp.Name = "img_Photo"
            xCmpPath = img
            Sheet1.Range("AE1").FormulaR1C1 = xCmpPath
        End If
    End Sub

Resources