Extracting URLs from Hyperlinked Images

One way you can use data from the Internet in an Excel worksheet is to copy it from a Web page and then paste it into the worksheet. For instance, you can select a table of data on a Web page, press Ctrl+C to copy it to the Clipboard, select a cell in Excel, and then press Ctrl+V. Excel does its best to parse the data and put it in the proper cells, just like it was in the original table.

The problem is that you’ll often get more than just the table data. If there were other objects in the data you copied from the Web, those objects will be pasted into the worksheet, as well. It is not uncommon to end up with all sorts of small graphics in the worksheet. If these graphics were originally hyperlinks, you may want to actually extract the hyperlink and then delete the graphic. This would make the data in the worksheet much more usable.

The way to do this is with a macro. Once you’ve pasted the Web information into the worksheet, run the following macro.

Sub ConvertHLShapes()
    Dim shp As Shape
    Dim sTemp As String

    For Each shp In ActiveSheet.Shapes
        sTemp = ""
        On Error Resume Next 'go to next shape if no hyperlink
        sTemp = shp.Hyperlink.Address
        On Error GoTo 0
        If sTemp  "" Then
            shp.TopLeftCell.Value = sTemp
        End If
End Sub

This macro steps through each of the shapes in the worksheet. It then checks to see if the shape has an associated hyperlink. If it does, then the address of that hyperlink (in the sTemp variable) is placed into the cell at the top-left corner of where the shape is located. The macro deletes any shapes that have hyperlinks; you can force it to delete all shapes in the worksheet by simply moving the shp.Delete line to the outside of the If … End If structure.