It's an old thread, but

Private Con As New ADODB.Connectio n

is a bad idea. When you're through with an object, you should destroy it. If you instantiate it in the declaration, you can't. Declare it as

Private Con As ADODB.Connectio n

Then, in the code, instantiate it:

Set Con = New ADODB.Connectio n

Later in the code, when you're through with it, destroy it:
...