A sincere thank you for implemeting this. Works great!
Been using this for a while and thanks again. One minor issue I've seen is if I drop a polymorphic VI on the block diagram, then copy it to my clipboard, then invoke an insert, instead of the polymorphic VI being inserted, the currently selected instance is inserted. Same with the replace.
A solution is in where you check to see if the one reference from the Select List is valid, you then use the to more specific to go to a SubVI. I added code which first sees what the class name is. If it is a PolymorphicSubVI then read the polymorphic VI reference, and get the path of that for the insert or replace.
So I made a new version of this which doesn't rely on replacing the native insert, and supports having multiple objects in your clipboard. I choose to make a new thread instead of updating this one, because the technique is so different that I didn't want it to get confusing with multiple attachments for new and old versions that work differently in the same thread.