The bang operator provides late bound access to the default member of the object that precedes it. The dot is used to early bind the reference(s).
Put another way, if your form control name is "txtName" and you code "Me!txtNaem" and compile the code, the mistake will not be caught; not until a line containing that mistake is executed. That's why I would never use Me! over Me. If however you use Me.txtNaem and compile, the mistake will be caught.
If that code won't work on one pc without using ! then it suggests to me there is some sort of library reference problem. Another possibility would be that the code reference and control name are out of sync on the copied form, but I don't see how using ! should resolve that. IMO if the other party needs a form you have created or modified, they should be the one pulling it in to their db, not you sending it.
This also makes me wonder how the distribution of front end objects is being handled. If the other party is using the same front end (the db is split, yes??) then that is what should be distributed.
The more we hear silence, the more we begin to think about our value in this universe.
Paraphrase of Professor Brian Cox.