well on my current miggy it too had a troublesome sunroof - having to hold in the button to close even with carrying out the "calibration" procedure in the owner's book. Initially I thought it might have been the runners but after greasing those, the problem came back again in a matter of days.
Turned out to be the grease inside the gearbox had solidified (probably through lack of use by the previous owners). So much so that when I seperated the motor from the gearbox and removed the gears that drive the brass gear that engages with the belt which moves the roof, the brass gear couldn't be turned by hand at all !!
After cleaning up and lubricating with white lithium grease, I've had no more problems with it whatsoever.
However, there's a bit of a "gotcha" ... what I found was that when reconnecting the power to the motor, it moved forwards and back again a bit ... but not the same amount - so the roof wasn't at the right level any longer.
Eventually I solved this by:
refit the motor minus its' power cable
turn the gear manually using a large screwdriver until the roof is in the correct position
remove motor
reconnect cable to motor, push button in so that it runs through its' adjustment
refit motor to sunroof
... easy when you know how