The coil primary voltage is supplied by the battery, after it passes through the ignition switch. Ignition switch contacts will oxidize over time, which creates excessive resistance in the switch. This will reduce the primary voltage to the coil. So the logical thing to do in this case is to replace the ignition switch.
I expect this will deal with the problem, but if it doesn't; two other, less likely possibilities are a defective anti dieseling relay, or a defective crankshaft position sensor.