VB Decompiler
VB Decompiler is an advanced tool that can disassembly and decompile programs (EXE, DLL, or OCX) written in Visual Basic 5.0/6.0 and programs based on .NET technology (Visual C#, Visual Basic .NET, etc). As you know, programs written in Visual Basic and C# can be compiled to interpreted pseudo code, to assembler native code, and to a MSIL .NET assembly (x86 and x64). VB Decompiler supports decompilation for all this formats.
Since p-code and .NET intermediate language consists of high-level commands, most code can be decompiled to source (though, of course, you won't get the names of variables, functions, user defined types, etc.). VB Decompiler supports up to 1400 p-code commands and restores source code as precisely as possible. Then you can manually finish that source code and try to compile it again.

In case of a program compiled to native code, VB Decompiler will recover as much of the source code as possible; it achieves a higher success rate than any competitive product. Even in this situation, VB Decompiler can help you analyze the program. It contains a powerful disassembler/emulator that will try to decode as many assembler instructions as possible to the most likely VB commands. Of course, VB Decompiler may fail on some assembler code optimizations and may be unable to recover some code. However, currently it provides the best approach to analyzing native-code applications.
In general, VB Decompiler is an ideal tool for analyzing VB programs. It's a must-have if you've lost some source code and need to partially restore your project!