Couple guesses without benefit of coffee or sitting down with AutoCAD ...
1. You should use vars to host the source & target folder names to prevent typos.
2. When using vlax-invoke arguments that visual basic expects as vbTrue & vbFalse are instead passed as -1 and 0 respectively.
3. Operations like CopyFolder are not generally instantaneous (likely spawns an asynchronous operation). Yet program program flow merrily continues suggesting the CopyFolder call is complete. So it's quite possible you're releasing the object before it has completed its task. If that proves the case one might have to write a function that stays in a loop while validating folder replication (c/w timeout so an infinite loop is thwarted) before allowing the release of the FSO variable.
4. Like I said, all wild assed guesses.
5. Off to find coffee ...