It may be a very obvious one, but how do I add more than one relative hyperlink to a point feature class in ArcGIS for Desktop with a Basic level license?

The Basic level license eliminates using Attachments being a possibility.


4 Answers 4


You can do field based hyperlinks (using hyperlink tool), however you have to choose the Script option and modify the script slightly to point at your second or third field, see instruction below:

  1. Go to layer Properties>Display tab
  2. Check Support Hyperlinks, then toggle the Script radio button
  3. Click on the Edit button
  4. Update the VBS function to point to additional fields, see code example below:

This opens pictures from two different fields using hyperlink tool

Function OpenLink ( [PICTURE1] , [PICTURE2]  )
  Dim path, path2
  Dim objShell
  path = [PICTURE1]
  path2 = [PICTURE2]
  Set objShell = CreateObject("Shell.Application")
  objShell.ShellExecute path, "", "", "open", 1
  objShell.ShellExecute path2, "", "", "open", 1
  • This is actually a nice workaround. Fortunately, I have only 2 pdfs per location point so it works great in my case. If there is say 10 documents to hyperlink to, perhaps macro method would work better? Many thanks, Magda
    – Magda
    Mar 15, 2013 at 12:41

ArcGIS has 2 standard ways to define a hyperlink:

  1. field based: Only one hyperlink for one feature.
  2. dynamic: multiple hyperlinks for one feature. To set a dynamic hyperlink for a feature, click on that feature with the Identify tool.

This is an ArcWatch article about hyperlinks.

Summary of workarounds to use multiple hyperlinks with field based hyperlinks:

  • Attachments (require an ArcGIS for Desktop Standard or Advanced license) (see comment of PolyGeo)
  • custom script/macro - for instructions see answer of artwork21
  • relationship (relate): create a relate 1:N from layer to a second table with hyperlinks
  • Hi Jens. Thanks for the answer. Second method is how I have it defined now. But I'd like to be able to use 'Hyperlink tool' for multiple hyperlinks if at all possible??
    – Magda
    Mar 15, 2013 at 10:55
  • 3
    No, there not standard way. A field based hyperlinks only support ONE hyperlink. Workarounds: since a hyperlink can also open a macro, you could program a macro (or search for it) whitch uses multiple hyperlinks. You can also try to use a relationship (relate): Create a relate 1:N form your points to a second table with the hyperlinks.
    – Jens
    Mar 15, 2013 at 11:21
  • Not standard, but a bit of configuration and you can do it using field based, see my answer.
    – artwork21
    Mar 15, 2013 at 11:27
  • 1
    @Jens - I would add your idea in the comment of using a Relationship as a means of having multiple hyperlinks to your actual answer. From all the reading and searching that i have done, I think this is really the best way to do this that could then be easily taken out of the ESRI system if necessary. That is to say that it is most universally applicable because you could still create a one to many join in a different database or GIS software if the data were moved somewhere else. Mar 15, 2013 at 21:49

Whilst searching for an answer to this question I also found the VBScript solution to be a good option. I have a table that contains up to 20 links to pdfs with field names such as ReportLnk01, ReportLnk02 etc. I also have a single field (LnkPath) that contains a relative path to the documents for each record. The following script was used to open multiple hyperlinks to a single point:

Function OpenLink ( [Lnk_Path] , [ReportLnk01] , [ReportLnk02]  , [ReportLnk03] )

  Dim path1, path2, path3
  Dim objShell, fileObj
  path1 = "..\" & [Lnk_Path] & [ReportLnk01]
  path2 = "..\" & [Lnk_Path] & [ReportLnk02]
  path3 = "..\" & [Lnk_Path] & [ReportLnk03]

  Set fileObj = CreateObject("Scripting.FileSystemObject")
  Set objShell = CreateObject("Shell.Application")
  if ((Len(path1) > 0) And (fileObj.FileExists(path1))) then
     objShell.ShellExecute path1, "", "", "open", 1
  End if

  if ((Len(path2) > 0) And (fileObj.FileExists(path2))) then
     objShell.ShellExecute path2, "", "", "open", 1
   End if

  if ((Len(path3) > 0) And (fileObj.FileExists(path3))) then
     objShell.ShellExecute path3, "", "", "open", 1
   End if

End Function

I am doing this now, myself.
My solution was to store my hyperlinks in a related table.

So "Feature X" relates to multiple hyperlink records in that table as follows

   Feature |X|   ->Relates to Hyperlink Table ->   | X | Hyperlink 1|
                                                   | X | Hyperlink 2|
                                                   | X | Hyperlink 3|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.