Getting a list of workspaces might be quite difficult and you might need Visual LISP. I know you can check if it exists or not, from that you could build a list.
Based on your needs you might not even need the 'list' especially if you are diligent in creating the workspaces on each workstation.
Your code as described is a good idea and it looks like you're close to getting it to work.