Author Topic: Populating a custom shape with data from Excel  (Read 4438 times)

0 Members and 1 Guest are viewing this topic.

wjernigan

  • Newbie
  • *
  • Posts: 1
Populating a custom shape with data from Excel
« on: March 23, 2016, 09:56:56 AM »
Visio Professional 2013  and Excel 2013

I have created a custom shape.  Looks something like the image attached.
I want to populate that shape with data from different cells in Excel.
The relationship will be one row of data per shape.

I've honestly tried to find a related topic but all help points to the integration wizard, which is no help.  The wizard wants to place the entire row of data beside the object as opposed to being in the object.
« Last Edit: March 23, 2016, 09:58:52 AM by wjernigan »

Yacine

  • Hero Member
  • *****
  • Posts: 3236
Re: Populating a custom shape with data from Excel
« Reply #1 on: March 23, 2016, 11:30:24 AM »
Hi Wjernigan,
It is indeed better to have one shape with several custom properties in one shape and get this "parent" shape to display its data in the sub-shapes.

Set up the parent with Application, OS, etc. as custom props.
Having selected the parent, look for its sheet name - either in the drawing explorer, or the size and position window. Remember this name (the ID).
Now select one sub-shape and insert a field with a custom formula of the form: sheet.123!prop.Application (123 being the ID of the parent) to get the value of the prop Application displayed.

HTH,
Y.
Yacine

Nikolay

  • Hero Member
  • *****
  • Posts: 1307
    • UnmanagedVisio
Re: Populating a custom shape with data from Excel
« Reply #2 on: March 23, 2016, 02:08:38 PM »
I have recently done a small project for a customer with very close requirements. There I have identified the source excel cell by a custom property named 'excel cell'.  in the shape, you specify source row (name of excel row to get the data from). Then there is a small code piece that iterates over excel rows, then finds shape corresponding to the row, then sets it's text from the specified excel row cell.

Pretty easy approach, worked in my case. But this requires some coding. If you want to avoid code, you probably should follow the approach suggested by Yacine.

Please note that my approach  may be overkill in your case - in my case the cells were scattered around the excel sheet, so that sheet was not exactly a table.