S-T-O-P. Quit futzing with it trying to make it work. Figure out why it isn't working. Until then, you can only make it worse as you thrash about. Look up Microsoft's description of the message(s) and examine your code trying to see what it means.
An INSERT query does not have a recordset. Now, if you had executed the statement necessary to "open" that recordset, I presume that you would have gotten a message to that effect ... but apparently the computer didn't make it to that statement. It ran into a recordset-object that, while initialized in some way, had not been opened.
So you're looking at a logic-error in your code. As I said, thrashing-it is only gonna make it worse. Print it out, sit down at a bookstore with a nice cuppa cappucino, and read what you have right now carefully.
(Bear in mind also that I am not trying to be snide. If you would take offense, rest assured that none was intended.)