Avatar of Roger
Flag for United Kingdom of Great Britain and Northern Ireland

asked on 

Excel .AddPicture to inactive worksheet

To add picture 'myPic' (and onAction property) to Active worksheet("Item_Files"): I write this:

    Set wsIF = ThisWorkbook.Worksheets("Item_Files")
    With Range(Cells(3, 1), Cells(3, 1))
        ActiveSheet.Shapes.AddPicture "D:\path\myPic.jpg", msoCTrue, msoTrue, .Left, .Top, -1, -1
        ActiveSheet.Shapes(ActiveSheet.Shapes.Count).Height = .Height
        ActiveSheet.Shapes(ActiveSheet.Shapes.Count).OnAction = "item_Files_shapeButtons"
    End With

- But, several pics are to be added at same time, and worksheet("Item_Files") is INACTIVE

After a struggle, I found the code below added picture 'myPic' (and onAction property) to INactive worksheet("Item_Files"):
    Set wsIF = ThisWorkbook.Worksheets("Item_Files")
    With wsIF.Range("X1")
        wsIF.Shapes.AddPicture "D:\path\myPic.jpg", msoCTrue, msoTrue, .Left + 1, .Top + 1, -1, -1    
        wsIF.Shapes(wsIF.Shapes.Count).Height = .Height
        wsIF.Shapes(wsIF.Shapes.Count).OnAction = "item_Files_shapeButtons"
    End With

- One or more pics were delivered to the right sheet and cell, but to display the pics I had to Activate wsIF (ie  worksheet("Item_Files")), by clicking its tab.

Since clicking the tab is essential to see the result, I dont object to that (I only mention it in case you see signs of a flaw in my code)
But this is my first experience of adding pictures, and my next task is the add and remove some dynamically.

Each time I add a pic, I need to add  wsIF.Shapes(wsIF.Shapes.Count).NAME to a lookup list on another sheet.
So I need to repeatedly alternate between sheets.

THEREFORE I ask: is my code optimal - and what should I take on board for this exercise?

Many thanks
Microsoft Excel

Avatar of undefined
Last Comment

8/22/2022 - Mon