OK René, now I understand you better.
The trick with WblockCloneObjects is that ALL of the entities you want cloned, MUST all have the same owner container.
So, for example, all entities in Modelspace have the same container, a BlockTableRecord, which is modelspace.
Also, looking at your code, I would break it into two separate transactions. Start a transaction on your source dbase and collect all the entities you need and commit it.
Then start a transaction on your destination dbase to clone the objects over.
One catch - do NOT dispose of your source dbase untill all the above has finished. Actually, I just noticed that you're not disposing
of your source dbase SrcDb at all (I really don't read VB code all that well as I don't want to) - you definately should, otherwise it will lead to other problems.
As a general .NET rule of thumb, if an object implements the IDisposable interface by supplying a method called Dispose() you should call it. However, having said that,
the general rule of thumb for AutoCAD .NET is, if you create it and it's got Dispose(), call it when you're done, otherwise the dbase owns it and you leave it alone.
Seeing as you create a NEW dbase and read a dwg file into, you are responsible for cleaning up after yourself.
Hope this helps.
Cheers,
Glenn.