Connect a temporary jumper wire from the big battery cable terminal at the starter to the upstream (ignition switch) side of the coil, and spin the starter. If the engine starts, find the dirty or loose connection at the back of the ignition switch or somewhere else upstream. A bad connection will show 12 volts in a "open circuit" situation, bit it won't flow enough current to make the coil work. Dirty contacts INSIDE the ignition switch can do the same thing.
Jerry