Helix was going to be my other suggestion. Linux can do some magic things, even guess at the partition table, but if the data is too ruined then there are cases where it just can't fix all damage that Windows can cause or from a drive going bad (one other commercial tool you might want to look at for a drive with lots of read errors is SpinRite). The man page for gpart should give you all of the options to tell gpart to actually write the change (running Windows right now, not Linux, so I can't easily look myself).