This also worked for me, note that it uses an alias (although it worked fine without it) AND a WHERE clause, which puts it closer to your version.
Code:
Dim cn As New ADODB.Connection
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Jet OLEDB:Database Password=access;Data Source=C:\Documents and Settings\Names1.mdb"
cn.Open
Dim cmd As New ADODB.Command
cmd.ActiveConnection = cn
cmd.CommandText = "INSERT INTO [Names] SELECT * FROM [;Database=C:\Documents and Settings\Names2.mdb; pwd =access].[Names] as N Where N.Name = 'John' "
cmd.Execute
cn.Close
MsgBox "Success"