There were a couple of typos above, but I think you were saying you had tried:
echo 'meekerpaat!niiyah' | sed 's/[aeiou]\([aeiou]\)\(.*\!\)/\1\2/g'
The problem with this is that it will only replace the first vowel pair, because the match will swallow everything up to the exclamation mark, and then continue on from that point. And it has to do this even to determine if the exclamation mark exists. So you get the result 'mekerpaat!niiyah'.
You can put a loop in the sed command, so that it repeats the replace command until no more are found:
echo 'meekerpaat!niiyah' | sed ':repeat; s/[aeiou]\([aeiou]\)\(.*\!\)/\1\2/; t repeat'
This will give you the desired result 'mekerpat!niiyah'.