Try not specifying the spreadsheet type and just use the default. Also you may want to experiment with leaving off the extension all together and see if the api is smart enough.
For the user defined path check out the filedialog object. If the hlp file isn't helpful enough try a google and I...
Check out the filedialog help.
Type in filedialo. Then, put the cursor back in and hit F1.
The path returned for filedialog.selecteditems(lbound(filedialog.selecteditems)) would be a string good for your filename variable.
If the only problemis possibly that the table is not updated you could put rs.update before rs.findfirst
Or what I would do is link the table (using file import data->link table) then use a query with a where clause simular to your findfirst and thus get your id.
DoCmd is a member of access.application and a global. But you may be confusing it without referencing it through you're application object. I.e. put a period in front of it and try that.
Also I don't have an acCmdCode
Sorry for the late reply dbDamo, but they haven't let me come back to this problem for a while. The mailto works fine with the exception of not allowing for attachments.