Did you know you can use Excel to Image snapshots of your Excel spreadsheets ? Sure you can. What is more you can use this feature directly from VBA to achieve some impressive feats. Today we will learn how to use the Excel Camera Tool!
Excel Camera Tool
Let us start with exploring how to use the built-in Excel Camera Tool. The Excel Camera Tool is a button that let’s you create an image snapshot of any region of your Excel spreadsheet.
To use the Excel Camera Tool all you need to do is:
Select an Excel Range
Click on the Camera Tool Icon
Click on any place in your Excel Worksheet
Add Excel Camera Tool Icon
Adding the Excel Camera Tool to your Quick Access Toolbar is easy. Just follow the steps below:
Select the Customize Quick Access Toolbar icon
Click on the arrow show the Quick Access Toolbar menu.
Next click More commands.
Browser Commands not in the toolbar
From the Choose commands from: menu select Commands not in the toolbar.
Now you should see an item called Camera in the list of Commands.
Add the Camera Tool
Now select Camera and hit the Add button to add the Camera tool to your Quick Access Toolbar.
Now you should see the Excel Camera Tool Icon in your Quick Access Toolbar: .
Use Excel Camera Tool in VBA
The Camera Tool is very useful in your everyday work when you need to copy part of your Workbook as an Image i.e. send an image snapshot of an Excel Worksheet or Chart. Fortunately there is also an easy way to use it in VBA:
Images are what enriches our content, visualizing data enables us to compare results, notice patterns and provide insights. Most Excel files are bereft of any images, presenting raw data supported by boring charts. Dashboard often could use a couple of images here and there to visual a metric or trend. Today shortly on how to dynamically create, embed and delete images from your Excel Workbooks by using only VBA.
This will load the image from the URL. Can take a couple of seconds to complete. Awesome right?
Now with this you can do cool things. Why not upload your project status/dashboard on a webpage and simply refresh it using VBA?
Deleting / Replacing images using VBA
Often you will want to replace an existing image or remove one. Not as obvious as it seems, you can’t replace an existing image – instead need to delete and recreate using a new picture.
Delete an image from VBA
Just deleting an image can be done like this – based on it’s index:
Or like this if you need to obtain the Shape by name:
Replacing images using VBA
Now let’s see what’s the correct way to replace an image (of similar sizes and location):
fileName = "C:\NewImage.bmp"
'Collect the location and size of the image
Dim shHeight As Long, shWidth As Long, shTop As Long, shLeft As Long
Dim s as Shape, ws as Worksheet
Set ws = ActiveSheet
Set s = ws.Shapes("Picture 1")
shHeight = ws.Height: shWidth = ws.Width: shTop = ws.Top: shLeft = ws.Left
'Delete the image
'Recreate the image using same location and size
ws.Shapes.AddPicture(fileName, msoCTrue, msoCTrue, shLeft, shTop, shWidth, shHeight)