Yes you can add a memory shield, extra eproms and use SD cards to increase the data space available.
No you can't.
Any extra memory you add is not part of the system memory and has to be accessed specifically through code in your sketch. It does not allow you to use more code space.
What should i do if the program size exceeds more than 32KB.
My bad, Upgrading RAM In An Arduino Mega | Hackaday needs a mega and the eprom could be used to store text and other data but your right mike not program memory.
I think I generalised a little too much.
as mentioned above, you may be able to optimize your code - or - if you have lots of constants, or large string, you might be able to externalize them (eeprom, SD, flash). However, unless there is a large amount of these components this may not really work because you will need to add code to communicate with the devices.
It has been suggested you upgrade to a mega - that will certainly solve your problems - but at a fairly steep price. There are other alternatives that might work for you - such as LeafLabs maple, or ChipKit uno which has 128K of flash.