You can password protect it (just a beginner level of security) but that can be broken (though the person needs to know how). So other options would be make either standalone exe program OR add-ins.
Yes. Don't send it to them. Then they will not be able to manipulate it.
Otherwise, no. There is no way. There are some ways of hiding it some, but that security is easily defeated.
To make more secure, make a compiled add-in or standalone program.
No, but there is the possibility of obfuscation. If your code is really good, it won't stop anyone to decompile it, but at least you can make it harder. Search for vba obfuscator in Google.