This returns the results you you specified, but I'm not sure it returns the results you want. It was built on Oracle, so you may need to modify the syntax slightly and of course the table names.
CREATE TABLE T1 (ID Number(3), A Number(3), B Number(3), C Number(3), D Number(3));
CREATE TABLE T2 (ID Number(3), A Number(3), B Number(3), C Number(3));
CREATE TABLE T3 (ID Number(3), A Number(3), B Number(3), C Number(3), D Number(3));
INSERT INTO T1 values (1, 1, 5, 9, 13);
INSERT INTO T1 values (2, 2, 6, 10, 14);
INSERT INTO T1 values (3, 3, 7, 11, 15);
INSERT INTO T1 values (4, 4, 8, 12, 16);
INSERT INTO T2 (
SELECT T1B.ID, T1A.A, T1A.B, T1A.C FROM T1 T1A
CROSS JOIN T1 T1B
WHERE T1A.ID=1
);
INSERT INTO T3 (
SELECT T1B.ID, T1A.A, T1A.B, T1A.C, (SELECT T1C.C FROM T1 T1C WHERE T1C.ID=2)
FROM T1 T1A
CROSS JOIN T1 T1B
WHERE T1A.ID=1
);
SELECT * FROM T2;
SELECT * FROM T3;
An "After Insert" data macro can certainly modify records in other tables. You can use the LookupRecord, EditRecord, and CreateRecord Data Blocks as required.
However, a data macro cannot run a VBA script. Your actions are limited to those available in the data macro environment itself.
Best Answer
Either insert DEFAULT (unquoted) for that column, or specify the list of columns being inserted and omit the primary key column from that list.