There are a couple things you could do.
You could have him sit or lie down when people are coming in - engage his brain so he doesn't get so excited he wants to snap.
You could teach him to carry a ball or toy in his mouth (can't snap with his mouth full) when people are visiting or before he can be pet. I trained mine to hold a ball when greeting people because he can be particularly shark-ish.
In conjunction with teaching him good behaviors, if you keep a short lead on him, any time he snaps you can give him a negative marker, like an "Eh!" and immediately remove him to another room for ten seconds.
Puppy school and training in general will also help tremendously with his self control.