1. Yes, any file which has an extension which has been set to open with a specific program (doc = Word, xsl - Excel, csv = Excel, etc)
2. The ActiveX portions of the Vlisp code are derived from the ActiveX methods & properties. There are no official documents that show exactly how this is done. A good start, however, is the Visual Lisp Developer's Bible by David M Stein. I think a copy has ben posted here at one time.
3. the variable "file" is an argument to the function, which makes it a local variable to that function.
4. Using findfile, even if you know the name & location, will ensure you have the file...it really doesn't take much time at all to execute.
5. No and No. The GetInterfaceObject is an ActiveX method for Autocad, wheareas the get-or-creat-object will get an, or create a new, instance of an object (program). Do not replace Shell with anything, see response to question #1.
HTH