I think the best way to do it in VBA is to use the RecordSetClone property. This way you can manipulate columns before you actually insert incase there would be issues with primary keys. The recordset clone returns all records that you currently see on the form. So this would account for filtering too.
“TableName” referred for the RS recordset is the table bound to the other form. Or even your same form that you are copying from.
Code could look like this.
Dim RSC as recordset, RS as recordset
set RSC = me.recordsetclone
Set RS = currentdb().Openrecordset("TableName",vbOpenDynaset)
While Not RSC.EOF