In general it is not really possible to go from the exe to the original code. First of all the variable names are all lost allong with many of the function names and they become just addresses. Secondly the compilerr does all kinds of optimizations for you to make your program work faster or use resourses more effectivly.
Because compilers work with a good amout of regularity it is possible to decompile a program to a rather ruff version of the code. The process then becomes a debugging excercize to watch each routine (or at least the ones that you are interested in) to see if you can guess at how it works and what each variable does.
Basicly the more expensive tools work pretty well, and the free ones work good enough, but a lot of it comes down to who is looking at the code.
There is a tutorial on
dissasembly of VB files here on DIC. It also lists some of the more common tools used in dissassembly.