You definitely want to go with a subroutine rather than a Worksheet Formula
to fix an entire worksheet. Because the subroutine can fix your data in place.
The worksheet formula requires an extra column for each conversion then you
have a lot of fixing up to do afterwards.
I would suggest the macros in
http://www.mvps.org/dmcritchie/excel/proper.htm
you have to copy two or three macros for this, but it will run considerably
faster than the macro you were already provided and you can
make some changes to the macro to match your data, as you probably
do not want each word changed to proper case. For instance my own
lastname would very strange as Mcritchie, and IBM would look strange
as Ibm. You can't program for every case but you can certainly program
for what you are most likely to encounter with your own data.