I can offer one suggestion:
Kode is a premade save/load system, that plugs in fairly easily, and can be manipulated with GUI (Although the hero save is in JASS).
It can save as many variables as you like. You have to make your own definitions to be able to interpret the code, though, because rawcodes for unit names in particular are very VERY big.
For example, if you have 8 possible hero types, you make a unit-type array; Hero_Type[1] being mountain king, Hero_Type[2] being illidan, etc. etc. When you process the code, and it returns "2" , you run a trigger "Create N units of type "Hero_Type[returnedvalue]" at loc facing direction"
I wouldn't save what unit types they have; instead save how many of each unit typoe they have; a number from 1 - 20 is much smaller than the rawcodes. Even if you have 50 different units, it is still easier.
Gold, lumber, food are easy.
If there is a limit to the abilities a hero can have (i.e. 4) and it depends on the hero type that is loaded, you can have predefined "1 = Slam", "2 = Chain lightning" "3 = heal" "4 = drunken brawler" and have whcih four it is vary on the unit; you return 4 values from the code, and whallah!
if you want to think even more, you can use a "binary" code to compress it more, where 2 = slam, 4 = chain lightning, 8 = heal, 16 = drunken brawler, so that 2 = slam alone, 10 equals heal and slam, 20 = drunken brawler and chain lightning (i.e 2 ^ 2 (chain lightning) + 2 ^ 4 (drunken brawler) = 20 )
I would do similar with the unit abilities available (as long as they are global. once you start defining seperate abilities for each unit you run into trouble)
Hope that helps. I do reccomend Kode. I believe it is available on this site, but the link above gives you teh how-to information
Cheers, and good luck
=============={edit}==============
if you are making a single-player map, you can use something called gamecaches; they are used to save information for campaigns, for instance, and also in advanced spells to make them multi-user-instancable (for example, structs). This only works for single-player to load the next time the map is played.
A save/load is essential for multiplayer.