First, yes. COM code and Managed code (they are both .NET, if you use the .NET framework to access them) can live in the same module, but from my experience, you have to be pretty careful about mixing the two.
I had a VBA project that I upgraded from LSP in '05. Then when I finally got my company to get me Visual Studio, I converted the code over in the quickest way possible, which was all COM. Once I finished that, I started to convert things from COM to Managed. During the process while I had some things converted and others not, I experienced various unexpected instabilities of the fatal variety.
My advice is to keep the two seperate, as in don't go trying to use COM on an object you have open in a transaction or vice versa. Do the COM stuff in one sub, and the transaction stuff in another. Both Subs could be in the same module. And technically, it could all be one function, if written correctly with the transaction separated from the COM access.
And just as important, my advice is to eventually get everything converted to Managed code. I finally accomplished this early '08, and ultimately, once I got everything figured out, the performance and stability of my program were greatly improved.
Second C# and VB (or anything else J#, C++, F#, etc...) can NOT live in the same module, or class, but you can have multiple languages in your project by building seperate assemblies and referencing them. eg. build all the C# code into a .DLL and reference that into your VB project.
Dave O.