Ok, I have been trying anything to see what happens. I have ended up with the following code which compiles - I havn't written enough to test it yet.
Excel._Workbook wb = workbook_model.GetExcelWorkbook();
Microsoft.Vbe.Interop.vbext_ComponentType component_type = Microsoft.Vbe.Interop.vbext_ComponentType.vbext_ct_StdModule;
Microsoft.Vbe.Interop.VBComponent module = wb.VBProject.VBComponents.Add(component_type);>
So it seems that I used the wrong type. I used types starting VBIDE but should have used the Microsoft.Vbe.Interop types. I don't know what is wrong woth using the VBIDE types in my case as the examples use VBIDE. And, coming from C++, I have been told that .net is really good because instead of haing umpteen classes and libraries available to do similar or the same things, .net apparantly just has one correct lib or class to use. This does not seem to be the case here. I am confused!